Я не могу отображать ошибки на экране при записи в файл журнала. При проверке распечатки phpinfo () у меня такое же значение master a local для
display_errors On
display_startup_errors On
error_log /var/log/php.log
error_reporting E_ALL & ~E_NOTICE
log_errors On
log_errors_max_len
ls -l /var/log/php.log is -rw-rw-rw- 1 root root 0 21 июня, 07:47 /var/log/php.log для / var и / varlog drwxrwxrwx 23 root root 4096 2 июня 11 : 13 var
когда в коде есть ошибка, браузеры ничего не показывают на странице, а браузер сообщает, что для страницы нет источника. Любые предложения о том, где еще искать или изменить, чтобы ошибки где-то появлялись (в любом месте было бы хорошо)
редактировать: мой сценарий ошибки сейчас
<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);
echo "print from error.php 2 ";
error
//print from erroerror to cuase logging to happen.
?>
это будет напечатано на дисплее и в журнале
Notice: Use of undefined constant error - assumed 'error' in /var/www/piku_dev2/error.php on line 7
но если я помещаю мусор вроде # @ $% $ в строку ошибки, я не получаю ни одного сообщения об ошибке.
Edit2: Проблема оказалась в файле httpd.conf. Я пока не знаю, что это было, так как это было исправлено кем-то другим.
Я вижу несколько возможных решений вашей проблемы. Вот наиболее частые проблемы, с которыми вы можете столкнуться:
#@$%$
чтобы вызвать ошибку. Однако PHP обрабатывает любую строку, начинающуюся с хеша, как комментарий, поэтому эта строка никогда не будет оцениваться и, следовательно, никогда не вызовет состояние ошибки.php.ini
файлы, о которых вам следует знать; один для Apache и один для PHP CLI. Убедитесь, что тот, который вы отредактировали, предназначен для Apache, если ваш скрипт вызывается из веб-браузера. Каталог, в котором находится этот файл, будет отличаться от дистрибутива к дистрибутиву, но путь по умолчанию обычно немного отличается от /etc/php/apache/php.ini
php.ini
файл или отправьте сигнал SIGHUP в Apache, чтобы принудительно перечитать файл конфигурации. error_reporting
и log_errors
переменные конфигурации могут быть перезаписаны локально в файле vhost Apache или даже в самом скрипте PHP. Убедитесь, что конфигурация сервера по умолчанию не перезаписывает эти переменные локально в конфигурации Apache для используемого вами vhost./var/log/php.log
файл должен быть доступен для записи Apache. Обычно безопасно установить владельцем этого файла пользователя Apache в вашей системе (пользователь Apache обычно либо www-data
или apache
).Раньше у меня не было журналов ошибок в двух случаях:
php_error_log
файл..htaccess
, например неправильные настройки модуля перезаписи. В этой ситуации ошибки регистрируются в Apache. error_log
файл.Похоже, что display_errors или Отчет об ошибках были отменены чем-то другим.
Это случилось со мной из-за приложения, которое позже меняет error_reporting в начальной загрузке, чего я не видел.
Хорошей практикой является поиск error_reporting в приложении и наблюдение за его изменением.
Моя проблема заключалась в том, что apache не только не мог писать в файлы журнала, но и не мог писать в каталог / var / log / httpd.
Мое исправление?
php.ini error_log = /var/log/httpd/php-error.log
chmod 777 / var / журнал chmod 777 / var / log / httpd
Кстати, я использую CentOS 6. Должен быть способ лучше, чем chmod'ing вашего журнала и папки httpd на 777, но это был единственный способ заставить его работать. Вы можете добавить apache в корневую группу, что было бы плохой идеей.