Sprawdziłem plik ini PHP ( php.ini
) i display_errors
jest ustawiony, a także raportowanie błędów E_ALL
. Uruchomiłem ponownie serwer Apache.
Umieściłem te wiersze na początku mojego skryptu i nawet nie wychwytuje prostych błędów analizy. Na przykład deklaruję zmienne za pomocą "$"
a i nie zamykam instrukcji ";"
. Ale wszystkie moje skrypty pokazują pustą stronę na tych błędach, ale tak naprawdę chcę zobaczyć błędy w wynikach mojej przeglądarki.
error_reporting(E_ALL);
ini_set('display_errors', 1);
Co pozostało do zrobienia?
$_REQUEST
parametru), te dwa wiersze będą działać przez większość czasu.Odpowiedzi:
To zawsze działa dla mnie:
Jednak nie powoduje to, że PHP wyświetla błędy parsowania - jedynym sposobem pokazania tych błędów jest zmodyfikowanie pliku php.ini za pomocą tego wiersza:
(jeśli nie masz dostępu
php.ini
, wstawienie tej linii.htaccess
może również działać):źródło
php_flag display_errors 1
dla .htaccessE_ALL
nie wystarcza do wyświetlenia wszystkich błędów w PHP 5.3. „E_STRICT
stał się częściąE_ALL
5.4.0” - PHP Manual PotrzebujeszE_ALL | E_STRICT
lub-1
w tej wersji.Nie można wyłapać błędów analizy podczas włączania wyjścia błędu w czasie wykonywania, ponieważ analizuje on plik przed faktycznym wykonaniem czegokolwiek (a ponieważ napotkał błąd podczas tego, nic nie wykona). Musisz zmienić faktyczną konfigurację serwera, aby włączone były parametry display_errors i używany był odpowiedni poziom zgłaszania błędów. Jeśli nie masz dostępu do php.ini, możesz być w stanie użyć .htaccess lub podobnego, w zależności od serwera.
To pytanie może zawierać dodatkowe informacje.
źródło
Wewnątrz twojego php.ini :
Następnie uruchom ponownie serwer WWW.
źródło
sudo service apache2 restart
sudo apachectl -k restart
.Loaded Configuration File
Aby wyświetlić wszystkie błędy, musisz:
1. Niech te wiersze w skrypcie PHP, który wywołujesz z przeglądarki (zazwyczaj
index.php
):2. (a) Upewnij się, że ten skrypt nie zawiera błędów składniowych
-lub-
2. (b) Ustaw
display_errors = On
w swoimphp.ini
W przeciwnym razie nie może nawet uruchomić tych 2 linii!
Możesz sprawdzić błędy skryptu w skrypcie, uruchamiając (w wierszu poleceń):
Jeśli to skrypt z innego skryptu PHP to będzie wyświetlać składniowe błędy w dołączonego skryptu. Na przykład:
index.php
my_script.php
źródło
Niektórzy dostawcy hostingu pozwalają na zmianę parametrów PHP w
.htaccess
pliku.Możesz dodać następujący wiersz:
Miałem ten sam problem co twój i to rozwiązanie go rozwiązało.
źródło
Może się okazać, że wszystkie ustawienia „raportowania błędów” lub „błędów wyświetlania” nie działają w PHP 7. Jest tak, ponieważ zmieniła się obsługa błędów. Spróbuj zamiast tego:
Lub, aby wychwycić wyjątki i błędy za jednym razem (nie jest to wstecznie zgodne z PHP 5):
źródło
try{} catch() {}
wszędzie dodawać kod w twoim już zdefiniowanym kodzie php, nie chcę nawet myśleć o bałaganie, który będzie ...$bt = debug_backtrace(); print_r($bt);
.Error
. Jeśli przepiszesz wszystkie żądania (oprócz być może JavaScript, CSS, obrazy itp.) Do pliku index.php, możesz tam spróbować try catch catch, to ułatwia. Tak, każdy system, który nie ma pojedynczego punktu wejścia, wymagałby poważnych problemów z aktualizacją.To zadziała:
źródło
Posługiwać się:
Jest to najlepszy sposób na napisanie go, ale błąd składniowy daje puste dane wyjściowe, więc użyj konsoli, aby sprawdzić błędy składniowe. Najlepszym sposobem debugowania kodu PHP jest użycie konsoli; uruchom następujące:
źródło
Ustaw to w pliku index.php :
źródło
Utwórz plik o nazwie php.ini w folderze, w którym znajduje się plik PHP.
Wewnątrz php.ini dodaj następujący kod (podam prosty błąd pokazujący kod):
źródło
Oto skrypt PHP:
Aby uzyskać bardziej szczegółowe wyjaśnienie błędów PHP, odwiedź PHP Error - error_reporting () .
źródło
Jeśli pomimo wykonania wszystkich powyższych odpowiedzi (lub nie możesz edytować pliku php.ini) nadal nie możesz otrzymać komunikatu o błędzie, spróbuj utworzyć nowy plik PHP, który umożliwia zgłaszanie błędów, a następnie dołącz plik powodujący problem. na przykład:
Pomimo prawidłowego ustawienia wszystkiego w moim
php.ini
pliku, był to jedyny sposób, w jaki mogłem złapać błąd przestrzeni nazw. Mój dokładny scenariusz to:źródło
Zwykle korzystałem z następującego kodu w moich zwykłych projektach PHP.
źródło
Używając PHP jako modułu Apache, możemy zmienić ustawienia konfiguracji za pomocą dyrektyw w plikach konfiguracyjnych Apache (np. Httpd.conf) i plikach .htaccess. Będziesz potrzebował do tego uprawnień „AllowOverride Options” lub „AllowOverride All”.
Sprawdź to
http://funbird.co.uk/blog/tech-articals/linux-tech-articals/enabling-error-display-php-via-htaccess
źródło
Jeśli w jakiś sposób znajdziesz się w sytuacji, w której nie możesz zmodyfikować ustawienia za pomocą
php.ini
lub.htaccess
nie masz szczęścia do wyświetlania błędów, gdy skrypty PHP zawierają błędy analizy. Następnie musisz rozwiązać problem z pobieraniem plików w wierszu polecenia w następujący sposób:Jeśli twój host jest tak zablokowany, że nie pozwala na zmianę wartości za pomocą
php.ini
lub.htaccess
, może również uniemożliwić zmianę wartości za pomocąini_set
. Możesz to sprawdzić za pomocą następującego skryptu PHP:źródło
find . -name '*.php' -type f -exec php -l {} \; | grep -v 'No syntax errors detected'
jest prostszePonieważ obecnie korzystamy z PHP 7, podane tutaj odpowiedzi nie są już poprawne. Jedynym nadal OK jest ten autorstwa Franka Forte'a , który mówi o PHP 7.
Z drugiej strony, zamiast próbować wychwytywać błędy za pomocą try / catch, możesz użyć triku: użyj include.
Oto trzy fragmenty kodu:
Plik: tst1.php
Uruchomienie tego w PHP 7 niczego nie pokaże.
Teraz spróbuj tego:
Plik: tst2.php
Plik: tst3.php
Teraz uruchom tst2, który ustawia raportowanie błędów, a następnie dołącz tst3. Zobaczysz:
źródło
Możesz zrobić coś takiego:
Ustaw poniższe parametry w głównym pliku indeksu:
Następnie na podstawie wymagań możesz wybrać, które chcesz pokazać:
W przypadku wszystkich błędów, ostrzeżeń i uwag:
Dla wszystkich błędów:
W przypadku wszystkich ostrzeżeń:
Dla wszystkich ogłoszeń:
Aby uzyskać więcej informacji, sprawdź tutaj .
źródło
index.html
?Możesz dodać własną niestandardową procedurę obsługi błędów, która może dostarczyć dodatkowych informacji debugowania. Ponadto możesz skonfigurować przesyłanie informacji pocztą e-mail.
źródło
Ten kod na górze powinien działać:
Spróbuj jednak edytować kod w telefonie w pliku:
źródło
Najlepszym / łatwym / szybkim rozwiązaniem, którego można użyć w przypadku szybkiego debugowania, jest otoczenie kodu przechwytującymi wyjątkami. Właśnie to robię, gdy chcę szybko sprawdzić coś w produkcji.
źródło
catch (Throwable $e)
jest lepszy ... Lub kolejny blok catch pod spodemcatch(Error $e)
Tylko napisz:
źródło
Tego się nauczyłem. W pliku PHP.INI
źródło
Gdy Twoja witryna jest
php.ini
aktywna, ze względów bezpieczeństwa plik powinien mieć wyłączone parametry display_errors. Jednak w środowisku programistycznym display_errors można włączyć w celu rozwiązywania problemów.źródło
Możesz to zrobić, zmieniając plik php.ini i dodając następujące elementy
LUB możesz także użyć następującego kodu, ponieważ to zawsze działa dla mnie
źródło
Jeśli masz zainstalowany Xdebug , możesz zastąpić każde ustawienie, ustawiając:
źródło
Możesz użyć tego kodu:
źródło
Zgłoś wszystkie błędy oprócz E_NOTICE
Wyświetl wszystkie błędy PHP
Wyłącz wszystkie raportowanie błędów
źródło
W Uniksowym interfejsie użytkownika bardzo praktyczne jest przekierowywanie tylko błędów do pliku :
Następnie z innej powłoki dla zmian na żywo:
lub po prostu
źródło
./script
jest skryptem php CLI (hashbang#!/usr/bin/php
). W ten sposób możesz przekierować błędy php w pliku. To jest potokowanie unix. To nie jest php jako CGI.Jeśli jest w linii poleceń, można uruchomić
php
z-ddisplay_errors=1
nadpisać ustawienie wphp.ini
:źródło
Inne niż
php.ini
iini_set()
funkcje w skrypcie PHP, możesz zrobić to samo za pomocą.htaccess
ihttpd.conf
dyrektyw pokazano poniżej.Niektórzy dostawcy hostingu pozwalają na ustawienie ustawień PHP za pomocą
.htaccess
ihttpd.conf
.Ukryj błędy PHP
znalazłem tę odpowiedź, trochę googlując
źródło