Włączanie wyświetlania błędów w PHP tylko przez htaccess


113

Testuję witrynę internetową.

W tej chwili błędy nie są wyświetlane (ale wiem, że istnieją).

Mam dostęp tylko do .htaccesspliku.

Jak mogę zrobić wszystkie błędy, aby były wyświetlane przy użyciu mojego .htaccesspliku?


Dodałem te linie do mojego .htaccesspliku:

php_flag display_startup_errors on
php_flag display_errors on
php_flag html_errors on

Strony wyświetlają teraz :

Wewnętrzny błąd serwera


trochę googlowałem, dodałem kilka flag do mojego htaccess; a moje strony nie mogą się ponownie wyświetlić
Ogugua Belonwu

3
Wygląda na to, że nie masz uprawnień do zastąpienia tych ustawień z htaccess. Może być konieczne ustawienie AllowOverride Allw konfiguracji Apache, jeśli masz do tego dostęp.
kapa

Sprawdź dziennik błędów Apache. Będzie musiał podać dokładny powód, dla którego otrzymujesz błąd wewnętrzny 500. To, co widzisz w przeglądarce, jest z założenia bezużyteczne do celów diagnostycznych.
Marc B

Odpowiedzi:


190

.htaccess:

php_flag display_startup_errors on
php_flag display_errors on
php_flag html_errors on
php_flag  log_errors on
php_value error_log  /home/path/public_html/domain/PHP_errors.log

14
Dodałem te linie do mojego htaccess: php_flag display_startup_errors na php_flag display_errors na php_flag html_errors na, a strony pokazują wewnętrzny błąd serwera
Ogugua Belonwu

4
Używając PHP jako modułu Apache, możesz także zmienić ustawienia konfiguracyjne za pomocą dyrektyw w plikach konfiguracyjnych Apache (np. Httpd.conf) i plikach .htaccess. Aby to zrobić, będziesz potrzebować uprawnień „AllowOverride Options” lub „AllowOverride All”. php.net/manual/en/configuration.changes.php
silex

Utwórz PHP_errors.log i utwórz go w inny 777 sposób, w jaki prawdopodobnie nie zobaczysz pliku utworzonego przez apache i wypełnionego ... przynajmniej musiałem go stworzyć.
PJunior

2
podobnie jak ogugua, teraz również mam wewnętrzny błąd serwera, używając tych linii.
wylądował

1
Jeśli otrzymasz 500, to prawdopodobnie dlatego, że używasz php-fpm, a nie mod_php.
mpchadwick

41
php_flag display_errors on

Aby włączyć faktyczne wyświetlanie błędów.

Aby ustawić typy wyświetlanych błędów, musisz użyć:

php_value error_reporting <integer>

W połączeniu z wartościami całkowitymi z tej strony: http://php.net/manual/en/errorfunc.constants.php

Zauważ, że jeśli użyjesz -1 dla swojej liczby całkowitej, pokaże ona wszystkie błędy i będzie zabezpieczona w przyszłości, gdy dodadzą nowe typy błędów.


17

Mam ochotę dodać więcej szczegółów do istniejącej odpowiedzi:

# PHP error handling for development servers
php_flag display_startup_errors on
php_flag display_errors on
php_flag html_errors on
php_flag log_errors on
php_flag ignore_repeated_errors off
php_flag ignore_repeated_source off
php_flag report_memleaks on
php_flag track_errors on
php_value docref_root 0
php_value docref_ext 0
php_value error_log /full/path/to/file/php_errors.log
php_value error_reporting -1
php_value log_errors_max_len 0

Przyznaj uprawnienia 777 lub 755 do pliku dziennika, a następnie dodaj kod

<Files php_errors.log>
     Order allow,deny
     Deny from all
     Satisfy All
</Files>

na końcu .htaccess. To ochroni twój plik dziennika.

Te opcje są odpowiednie dla serwera deweloperskiego. W przypadku serwera produkcyjnego nie należy wyświetlać użytkownikowi końcowemu żadnego błędu. Dlatego wyłącz flagi wyświetlania .

Aby uzyskać więcej informacji, kliknij ten link: Zaawansowana obsługa błędów PHP przez htaccess


1
co powiesz na podanie chmod „0644” do pliku dziennika błędów? czy to będzie nadal działać?
Andre Chenier

2

Jeśli chcesz zobaczyć tylko krytyczne błędy uruchomieniowe:

php_value display_errors on
php_value error_reporting 4

2

To działa dla mnie ( odniesienie ):

# PHP error handling for production servers
# Disable display of startup errors
php_flag display_startup_errors off

# Disable display of all other errors
php_flag display_errors off

# Disable HTML markup of errors
php_flag html_errors off

# Enable logging of errors
php_flag log_errors on

# Disable ignoring of repeat errors
php_flag ignore_repeated_errors off

# Disable ignoring of unique source errors
php_flag ignore_repeated_source off

# Enable logging of PHP memory leaks
php_flag report_memleaks on

# Preserve most recent error via php_errormsg
php_flag track_errors on

# Disable formatting of error reference links
php_value docref_root 0

# Disable formatting of error reference links
php_value docref_ext 0

# Specify path to PHP error log
php_value error_log /home/path/public_html/domain/PHP_errors.log

# Specify recording of all PHP errors
# [see footnote 3] # php_value error_reporting 999999999
php_value error_reporting -1

# Disable max error string length
php_value log_errors_max_len 0

# Protect error log by preventing public access
<Files PHP_errors.log>
 Order allow,deny
 Deny from all
 Satisfy All
</Files>
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.