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

#php #.htaccess #error-handling

#php #.htaccess #обработка ошибок

Вопрос:

Я тестирую веб-сайт онлайн.

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

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

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


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

 php_flag display_startup_errors on
php_flag display_errors on
php_flag html_errors on
  

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

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

Комментарии:

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

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

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

Ответ №1:

.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
  

Комментарии:

1. я добавил эти строки в свой htaccess: php_flag display_startup_errors на php_flag display_errors на php_flag html_errors на, и страницы отображают внутреннюю ошибку сервера

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

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

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

5. Как мы можем заставить это работать в php-fpm режиме выполнения?

Ответ №2:

 php_flag display_errors on
  

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

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

 php_value error_reporting <integer>
  

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

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

Комментарии:

1. Я использую этот веб-сайт, чтобы проще вычислять целочисленное значение: maximivanov.github.io/php-error-reporting-calculator

Ответ №3:

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

 # 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.
Это защитит ваш файл журнала.

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

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

Комментарии:

1. как насчет присвоения chmod «0644» файлу журнала ошибок? будет ли это работать по-прежнему?

Ответ №4:

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

 php_value display_errors on
php_value error_reporting 4
  

Ответ №5:

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

 # 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>