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