Błąd "Fatal error: Call to a member function add_current_page() on a non-object in /sklep/includes/application_top.php" zdarza się dosyć często w sklepach osCommerce i jest o tyle uciążliwy, że nie zniknie do momentu wygaśnięcia sesji lub zamknięcia i ponownego uruchomienia przeglądarki. Poniżej prezentujemy rozwiązanie problemu.
W pliku includes/application_top.php odszukaj kod:
testKod: php
if (tep_session_is_registered('navigation')) { if (PHP_VERSION < 4) { $broken_navigation = $navigation; $navigation = new navigationHistory; } } else { tep_session_register('navigation'); $navigation = new navigationHistory; } $navigation->add_current_page();
i zamień go na:
testKod: php
if (tep_session_is_registered('navigation')) { if (PHP_VERSION < 4) { $broken_navigation = $navigation; $navigation = new navigationHistory; } } else { tep_session_register('navigation'); $navigation = new navigationHistory; } $navigation = new navigationHistory; } $navigation->add_current_page();
W związku z zaprzestaniem wspierania wersji PHP4, wiele providerów aktualizuje parser php do wersji PHP5. Dla wielu użytkowników sklepów oscommerce oznacza to błędy w działaniu sklepu.
Jeśli w Twoim sklepie pojawia się którykolwiek z wymienionych poniżej błędów, należy zaktualizować sklep zgodnie z instrukcją zamieszczoną w tej poradzie.
Błąd #1:
w sklepie lub panelu administracyjnym pojawia się tekst:
FATAL ERROR: register_globals is disabled in php.ini, please enable it!
Rozwiązanie:
W pliku admin/includes/application_top.php odszukujemy kod:
testKod: php
}
I zamieniamy go na:
testKod: php
exit('Server Requirement Error: register_globals is disabled in your PHP configuration. This can be enabled in your php.ini configuration file or in the .htaccess file in your catalog directory. Please use PHP 4.3+ if register_globals cannot be enabled on the server.'); }
Następnie odszukaj kod:
testKod: php
i dodaj przed nim:
testKod: php
if ( ($session_started == true) && (PHP_VERSION >= 4.3) && function_exists('ini_get') && (ini_get('register_globals') == false) ) { }
W pliku includes/functions/sessions.php przed kodem:
testKod: php
if (STORE_SESSIONS == 'mysql') {
dodajemy:
testKod: php
}
Funkcje:
testKod: php
function tep_session_start() { } function tep_session_register($variable) { global $session_started; if ($session_started == true) { } else { return false; } } function tep_session_is_registered($variable) { } function tep_session_unregister($variable) { }
zamieniamy na:
testKod: php
function tep_session_start() { global $HTTP_GET_VARS, $HTTP_POST_VARS, $HTTP_COOKIE_VARS; $sane_session_id = true; $sane_session_id = false; } $sane_session_id = false; } $sane_session_id = false; } } if ($sane_session_id == false) { tep_redirect(tep_href_link(FILENAME_DEFAULT, '', 'NONSSL', false)); } } function tep_session_register($variable) { global $session_started; if ($session_started == true) { if (PHP_VERSION < 4.3) { } else { $_SESSION[$variable] =& $GLOBALS[$variable]; } else { $_SESSION[$variable] = null; } } } return false; } function tep_session_is_registered($variable) { if (PHP_VERSION < 4.3) { } else { } } function tep_session_unregister($variable) { if (PHP_VERSION < 4.3) { } else { } }
Następnie edytujemy plik admin/includes/application_top.php.Odszukaj w nim kod:
testKod: php
}
i zamień go na:
testKod: php
exit('Server Requirement Error: register_globals is disabled in your PHP configuration. This can be enabled in your php.ini configuration file or in the .htaccess file in your catalog directory. Please use PHP 4.3+ if register_globals cannot be enabled on the server.'); }
Następnie znajdź kod:
testKod: php
tep_session_start();
i dodaj po nim:
testKod: php
if ( (PHP_VERSION >= 4.3) && function_exists('ini_get') && (ini_get('register_globals') == false) ) { }
Zapisz plik application_top.php i otwórz plik admin/includes/functions/sessions.php. Na początku pliku dodaj kod:
testKod: php
}
następnie odszukaj funkcje:
testKod: php
function tep_session_start() { } function tep_session_register($variable) { } function tep_session_is_registered($variable) { } function tep_session_unregister($variable) { }
i zamień je na:
testKod: php
function tep_session_start() { global $HTTP_GET_VARS, $HTTP_POST_VARS, $HTTP_COOKIE_VARS; $sane_session_id = true; $sane_session_id = false; } $sane_session_id = false; } $sane_session_id = false; } } if ($sane_session_id == false) { tep_redirect(tep_href_link(FILENAME_DEFAULT, '', 'NONSSL', false)); } } function tep_session_register($variable) { if (PHP_VERSION < 4.3) { } else { $_SESSION[$variable] =& $GLOBALS[$variable]; } else { $_SESSION[$variable] = null; } } return false; } function tep_session_is_registered($variable) { if (PHP_VERSION < 4.3) { } else { } } function tep_session_unregister($variable) { if (PHP_VERSION < 4.3) { } else { } }
Błąd #2:
w panelu administracyjnym sklepu pojawia się tekst:
Fatal error: Cannot re-assign $this in admin/includes/classes/upload.php on line 31
Rozwiązanie:
W pliku admin/includes/classes/upload.php odszukaj kod:
testKod: php
$this = null;
i zamień na:
testKod: php
Po tych zabiegach Twój sklep będzie działał bez zarzutu.
| 22 maja 2012 |
|
|
| Źródło: MeteoGroup |