Dziś krótki artykuł, ale opisuje on problem dość często spotykany. Tak jak w tytule: w trakcie normalnego użytkowania sklepu często pojawia się „problem białej strony”.
Zawartość artykułu
Ale dlaczego?
Przede wszystkim należy zacząć od tego, że domyślnie błędy PHP w Presta Shop są tłumione. Oznacza to, że nie są wyświetlane ze względów bezpieczeństwa. Dlatego pojawia się zapobiegawczo biała strona, aby nie ujawniać co jest przyczyną błędu.
Co może być przyczyną błędu?
Może to wynikać z np.:
- Aktualizacji oprogramowania na serwerze, którą wykonał administrator. Np. została znacząco zwiększona wersja PHP, a skrypty za tym nie podążają.
-> NAPRAWA: Tutaj administator powinien albo przywrócić starą wersję albo skrypty powinny być odpowiednio zmienione przez programistę aby uwzględniały nową wersję. - Aktualizacji któregoś z modułów w Presta Shop wykonanej przez właściciela. Oprogramowanie na sklepie wymaga nowszej wersji (przeważnie PHP) i błąd w skrypcie wyłącza działanie sklepu.
-> NAPRAWA: Należy przywrócić starą wersję modułu lub tymczasowo go usunąć z serwera lub zaktualizować wersję PHP na serwerze - Brak zainstalowanego wymaganego rozszerzenia na serwerze. Np. może być to popularny moduł szyfrujący źródła kodu ionCube Encoder (występuje często w modułach komercyjnych, aby chronić kod autora). Jeśli rozszerzenia nie ma na serwerze – błąd uniemożliwia dalsze działanie.
-> NAPRAWA: administator powinien zainstalować ten dodatek na serwerze lub musimy zrezygnować z tego modułu (usuwając go z serwera) - Błędu PHP w składni któregoś skryptu.
-> NAPRAWA: poprawienie składni przez programistę - Błędu w składni szablonu Smarty w pliku .tpl (np. niezamknięty znacznik /if )
-> NAPRAWA: poprawienie składni przez programistę
Co zrobić aby usunąć błąd?
Przede wszystkim należy wyświetlić błąd, który jest ukryty.
Zaloguj się do FTP i znajdź plik:
config/defines.inc.php
Następnie zamień kod:
if (_PS_MODE_DEV_ === true) { @ini_set('display_errors', 'on'); @error_reporting(E_ALL | E_STRICT); define('_PS_DEBUG_SQL_', true); } else { @ini_set('display_errors', 'off'); define('_PS_DEBUG_SQL_', false); }
na:
if (_PS_MODE_DEV_ === true) { @ini_set('display_errors', 'on'); @error_reporting(E_ALL | E_STRICT); define('_PS_DEBUG_SQL_', true); } else { @ini_set('display_errors', 'on'); define('_PS_DEBUG_SQL_', false); }
Chodzi o zamienienie „off” na „on” w drugim wystąpieniu funkcji @ini_set
Gdy błąd już sie pojawi, będzie wiadomo co jest jego przyczyną. Najlepiej podeślij go do administratora serwera lub do nas na maila to postaramy Ci odpowiedzieć co jest jego przyczyną.
Po usunięciu błędu włącz ponownie tłumienie.
Uwaga, jak już sklep zostanie naprawiony cofnij zmiany wykonane w pliku:
config/defines.inc.php
Czyli zamień „on” na „off” w drugim wystąpieniu funkcji @ini_set. Poprawia to bezpieczeństwo sklepu. Po za tym nieistotne błędy też mogą być wyświetlane, co rzutuje na wizerunek sklepu.
Powodzenia!
[…] Aby zobaczyć ten błąd należy włączyć pokazywanie błędów. Jak to wykonać pisaliśmy np. w tym artykule https://pskrk.com/presta-shop-wyswietlanie-bialej-strony-podczas-logowania-lub-na-innej-pod… […]