Назад | Перейти на главную страницу

Ошибки PHP не хранятся на сервере CentOS

Я только что настроил 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 . Я думал, что это было для отображения ошибок на экране, но, похоже, это также для регистрации ошибок.