Включение отображения ошибок в PHP только через htaccess


113

Я тестирую сайт в Интернете.

В данный момент ошибки не отображаются (но я знаю, что они существуют).

У меня есть доступ только к .htaccessфайлу.

Как сделать так, чтобы все ошибки отображались в моем .htaccessфайле?


Я добавил эти строки в свой .htaccessфайл:

php_flag display_startup_errors on
php_flag display_errors on
php_flag html_errors on

И на страницах теперь отображается:

Внутренняя ошибка сервера


Я погуглил, добавил несколько флагов в свой htaccess; и мои страницы не могут отображаться снова
Огугуа Белонву

3
Похоже, у вас нет прав отменять эти настройки из htaccess. Возможно, вам придется установить AllowOverride Allконфигурацию Apache, если у вас есть к ней доступ.
капа

Проверьте журнал ошибок apache. Необходимо указать причину, по которой вы получаете внутреннюю ошибку 500. То, что вы видите в браузере, изначально бесполезно для диагностических целей.
Marc B

Ответы:


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
Я добавил эти строки в свой htaccess: php_flag display_startup_errors на php_flag display_errors на php_flag html_errors on и на страницах отображается внутренняя ошибка сервера
Ogugua Belonwu

4
При использовании PHP в качестве модуля Apache вы также можете изменить параметры конфигурации с помощью директив в файлах конфигурации Apache (например, httpd.conf) и файлах .htaccess. Для этого вам потребуются права «AllowOverride Options» или «AllowOverride All». php.net/manual/en/configuration.changes.php
кремнезем

Создайте PHP_errors.log и сделайте его 777, иначе вы, вероятно, не увидите файл, созданный apache и заполненный ... по крайней мере, мне пришлось его создать.
PJunior

2
как и ogugua, у меня теперь есть внутренняя ошибка сервера при использовании этих строк.
приземлился

1
Если вы получили 500, вероятно, это потому, что вы используете php-fpm, а не mod_php.
mpchadwick

41
php_flag display_errors on

Чтобы включить фактическое отображение ошибок.

Чтобы установить типы отображаемых ошибок, вам необходимо использовать:

php_value error_reporting <integer>

В сочетании с целочисленными значениями с этой страницы: http://php.net/manual/en/errorfunc.constants.php

Обратите внимание, что если вы используете -1 для своего целого числа, он покажет все ошибки и будет доказательством в будущем, когда они добавят новые типы ошибок.


17

Я хочу добавить больше деталей к существующему ответу:

# 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

Дайте разрешение 777 или 755 для файла журнала, а затем добавьте код

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

в конце .htaccess. Это защитит ваш файл журнала.

Эти параметры подходят для сервера разработки. Для производственного сервера вы не должны отображать никаких ошибок для конечного пользователя. Поэтому отключите отображение флажков .

Для получения дополнительной информации перейдите по этой ссылке: Расширенная обработка ошибок PHP через htaccess


1
как насчет добавления chmod "0644" в файл журнала ошибок? он будет еще работать?
Андре Шенье

2

Если вы хотите видеть только фатальные ошибки времени выполнения:

php_value display_errors on
php_value error_reporting 4

2

Это работает для меня ( ссылка ):

# 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>
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.