PHP error_log метод не записывает ошибки в мой файл журнала ошибок - PullRequest
18 голосов
/ 21 сентября 2011

Метод PHP error_log не записывает ошибки в пользовательский файл журнала ошибок.Он будет записывать только в /var/log/apache2/php_error.log

Вот параметры ведения журнала в моем php.ini:

error_reporting = E_ALL & ~E_DEPRECATED & ~E_NOTICE
display_errors = Off
log_errors = On
log_errors_max_len = 0 ; also tried with 9999999
error_log = /var/log/apache2/php_errors.log

PHP записывает свои ошибки в обычную ошибку Apachelog (/var/log/apache2/error.log), а не тот, который я указал выше.

То, что я уже пробовал:

  1. Я остановил и перезапустил apache после изменения файла php.ini
  2. Файл /var/log/apache2/php_errors.log имеет разрешения 777, и файл существует.
  3. Других переопределенных файлов php.ini нет.(Существует /etc/php5/cli/php.ini, но я не использую cli).
  4. Нет других настроек error_log = xxx ниже файла php.ini, который может перекрывать первый
  5. phpinfo () говорит error_log = /var/log/apache2/php_errors.log (то есть правильный файл), как в Local Value, так и в Master Value
  6. Тестовый скрипт, который я использую для генерацииошибки не содержат вызовов ini_set

(к вашему сведению: я использую Apache / 2.2.17 и PHP / 5.3.5-1ubuntu7.2 в Ubuntu 11.04)

Чтоя делаю не так?

Ответы [ 5 ]

14 голосов
/ 13 июня 2014

Я хотел бы ответить на этот вопрос, так как это высокий результат в Google, хотя это старый вопрос.

Я решил это, добавив разрешения на запись для всех пользователей в каталоге журналов.

В моем случае пользователь 'http' должен был иметь возможность записи в / var / log / httpd /, поэтому я запустил

# chmod a+w /var/log/httpd

Если файл уже существует, он может помочь сначала удалить его иразрешите Apache его создать.

Мой файл php.ini также содержит полный путь.

error_log = /var/log/httpd/php_errors.log
2 голосов
/ 13 декабря 2013

Вы можете попробовать указать имя файла следующим образом:

Я использую Apache 2.2.22 в Ubuntu.

Используйте эту команду PHP:

error_log("eric", 3, "/home/el/error.log");

Первый параметр - это сообщение, которое будет отправлено в журнал ошибок.2-й параметр 3 означает «ожидать имя файла назначения». Третий параметр - это место назначения.

Создайте файл /home/el/error.log и установите для его владельца следующее:

el@apollo:~$ ll error.log
-rwxrwxr-x 1 www-data www-data 7 Dec 13 14:30 error.log

Когда PHP интерпретирует метод error_log, он добавляет сообщение в ваш файл.

Источник: http://www.php.net/manual/en/function.error-log.php

0 голосов
/ 06 апреля 2016

Я потратил несколько часов сегодня, пытаясь выяснить, почему это не работает, и пытаясь отлаживать код, основываясь на том факте, что я могу что-то записать в журнал ошибок php. Само собой разумеется, я шел в темпе улиток, пока я не заработал регистрацию.

Я бы предположил, что более 90% времени это проблема с разрешениями. В моем случае демон был владельцем и группой для файла журнала, и мне пришлось sudo su получить права root, а затем изменить права доступа к файлу журнала. Я изменил на:

chmod 777 myphperror.log

Слава Богу за stackoverflow.com

0 голосов
/ 08 апреля 2014

Вы можете установить файл журнала ошибок для сайта в файле конфигурации сайта VirtualHost, например: /etc/apache2/sites-enabled/example.com.conf:

<VirtualHost *:80>

  ....

  ErrorLog ${APACHE_LOG_DIR}/www.example.com-error.log
  LogLevel warn
  CustomLog ${APACHE_LOG_DIR}/www.example.com-access.log combined

</VirtualHost>

В системе Unix ${APACHE_LOG_DIR} обычно /var/log/apache2 Ошибки и доступ будут сохранены в ${APACHE_LOG_DIR}/www.example.com-error.log и ${APACHE_LOG_DIR}/www.example.com-access.log.

0 голосов
/ 06 июня 2013

удалите php_errors.log и перезапустите apache2, сам сервер создаст новый файл php_errors.log с соответствующими разрешениями и владельцем.

rm -f /var/log/apache2/php_errors.log
service apache2 restart

ll /var/log/apache2/php_errors.log
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...