Я только что настроил php.ini на своем 64-битном VPS CentOS в /etc/php.ini, чтобы регистрировать ошибки PHP:
cat /etc/php.ini | grep php-errors.log
error_log = /var/log/php-errors.log
у меня тоже есть log_errors = on
Я создал файл журнала в / var / log / и это CHMOD 644. Я также включил сообщение об ошибках E_ALL
cat /etc/php.ini | grep error_reporting
; error_reporting
error_reporting = E_ALL
; Eval the expression with current error_reporting(). Set to true if you want
; error_reporting(0) around the eval().
Затем я перезапустил демон httpd. Когда я добавляю файл через загрузчик WordPress, я вижу, что он не загружен из-за проблемы с разрешением
“cannot-open-file.png” has failed to upload due to an error
Unable to create directory wp-content/uploads/2014/05. Is its parent directory writable by the server?
, но это не сохраняется как ошибка в php-errors.php:
pwd
/var/log
ls -l | grep php
-rw-r--r-- 1 root root 0 May 6 06:21 php-errors.log
Все остальные мои логины /var/log/httpd
являются также root:root
поэтому я предполагаю, что ведение журнала будет работать. И когда я изменил права доступа к файлу на apache:apache
как и предполагалось, у меня все еще не было ошибок в файле журнала. Даже добавление ошибки входа в .htaccess не помогло.
Я также проверил PHP.ini, используя phpinfo()
. Единственный загруженный ini - это тот, который я настроил в /etc/php.ini
а пользователь и группа, которые он использует, - это apache - User/Group apache(48)/48
. Что мне не хватает?
PS Могут быть проблемы с каталогом для файлов журнала, как предлагается здесь Не удается настроить журнал ошибок PHP Я ищу дополнительную информацию по этому поводу.
Если у вас возникли проблемы с записью / чтением файлов, вам следует просмотреть исчерпывающий список в этом ответе: https://stackoverflow.com/questions/12531408/setting-php-tmp-dir-php-upload-not-working
В принципе, если вы хотите, чтобы apache записывал в файл error_log, отличный от syslog, apache должен иметь разрешения на запись в него, и если файл еще не существует, apache также нуждается в разрешениях на запись в родительской папке.
Ничего из этого не применимо, если вы пытаетесь читать / писать или установить свой error_log в папку / tmp, начиная с CentOS 7. Ответ здесь: https://stackoverflow.com/questions/10752396/cant-write-to-tmp-with-php-desITE-777-permissions-and-no-open-basedir-value?rq=1 Ссылка на этот блог http://blog.oddbit.com/2012/11/05/fedora-private-tmp/ объясняет, как systemd
не позволяет.
Из официальная документация, вам следует изменить разрешение /var/log/php-errors.log поэтому файл доступен для записи пользователем apache (например, www, www-data и т. д.)
#chown www:www
журнал ошибок строка
Имя файла, в котором должны регистрироваться ошибки скрипта. Файл должен быть доступен для записи пользователю веб-сервера. Если используется специальное значение syslog, ошибки вместо этого отправляются в системный журнал. В Unix это означает syslog (3), а в Windows NT - журнал событий. Системный журнал не поддерживается в Windows 95. См. Также: syslog (). Если эта директива не установлена, ошибки отправляются в журнал ошибок SAPI. Например, это журнал ошибок в Apache или stderr в CLI. См. Также error_log ().
Видимо мне тоже понадобилось display_errors = on
. Я думал, что это было для отображения ошибок на экране, но, похоже, это также для регистрации ошибок.