Увімкнення відображення помилок у PHP лише через htaccess


113

Я тестую веб-сайт в Інтернеті.

Зараз помилки не відображаються (але я знаю, що вони існують).

Я маю доступ лише до .htaccessфайлу.

Як зробити всі помилки для відображення за допомогою мого .htaccessфайлу?


Я додав ці рядки до свого .htaccessфайлу:

php_flag display_startup_errors on
php_flag display_errors on
php_flag html_errors on

А тепер відображаються сторінки :

Внутрішня помилка сервера


я зробив кілька гуглів, додав кілька прапорів до свого htaccess; і мої сторінки не можуть відображатися знову
Ogugua Belonwu,

3
Здається, ви не маєте права змінювати ці налаштування від htaccess. Можливо, вам доведеться встановити AllowOverride Allв конфігурації Apache, якщо у вас є доступ до цього.
капа

Перевірте журнал помилок apache. Вам доведеться точно вказати причину, чому ви отримуєте внутрішню помилку 500. Те, що ви бачите в браузері, - це дизайн, марний для діагностичних цілей.
Марк Б

Відповіді:


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 на та на сторінках відображається внутрішня помилка сервера
Ogugua Belonwu

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

Створіть 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.