Я пытаюсь записать все ошибки, но по какой-то причине я не могу заставить его работать! Если я включаю display_errors в моем .htaccess, то ошибки появляются здесь и там. Но вместо того, чтобы показывать их, я хочу, чтобы они помещались в журнал, который я могу читать, чтобы мои пользователи не видели ошибок.
Я добавил их в мой файл .htaccess:
php_flag display_startup_errors off
php_flag display_errors off
php_flag html_errors off
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 /path/to/errors.txt
php_value error_reporting 32767
php_value log_errors_max_len 2048
Тем не менее, error.log еще пуст! Я попытался перезагрузить Apache, весь сервер, ничего. Любая помощь будет принята с благодарностью.
Версия PHP — 5.4.39-0 + deb7u2
Скорее всего, это проблема с разрешениями, объясняющая, почему ошибки не регистрируются. Вот фрагмент, который я использую:
ini_set("error_reporting", -1);
ini_set("log_errors", 1);
ini_set("error_log", "/var/www/site/php-error.log");
Я предполагаю, что вы используете дистрибутив Linux, поэтому, когда у вас есть код на вашей странице, с помощью командной строки создайте файл:
touch /var/www/site/php-error.log
chmod 644 /var/www/site/php-error.log
Затем для Ubuntu / Debian сделайте следующее:
chown www-data:www-data /var/www/site/php-error.log
Или для Centos / Red Hat:
chown apache:apache /var/www/site/php-error.log
Вы должны увидеть ошибки, которые регистрируются. Если это не удается, проверьте журнал ошибок, просмотрев его в реальном времени, а затем обновив страницу. Для просмотра журнала в реальном времени сделайте следующее:
Для Ubunut / Debian:
tail -f /var/log/apache2/error
Для Centos / Red Hat
tail -f /var/log/httpd/error
Сначала, пожалуйста, проверьте с помощью phpinfo (), что ваши настройки по умолчанию перезаписываются вашим htaccess. Phpinfo покажет вам локальные и основные значения.