Эта ветка вопросов и ответов была очень полезна для меня при настройке ведения журнала PHP CLI в среде Ubuntu 12.04, поэтому я хотел опубликовать ответ, в котором рассказывалось о том, что я узнал.В дополнение к отличной информации, предоставленной David Chan
, а также George Cummins
, я создал скрипт logrotate.d
, чтобы гарантировать, что журнал ошибок PHP CLI не вырастет изуправляйте и настраивайте его так, чтобы несколько пользователей могли регистрировать ошибки в общем журнале ошибок PHP CLI.
Во-первых, поведение PHP CLI по умолчанию заключается в регистрации сообщений об ошибках в стандартный вывод;запись в файл не является поведением по умолчанию.Что обычно означает вход в тот же сеанс терминала командной строки, в котором выполняется команда CLI PHP.Хотя в PHP-ini-файле есть места для указанного error_log
, для того, чтобы он действительно работал, необходимо выполнить дополнительные действия.
Сначала мне пришлось создать исходный файл php_errors.log
:
sudo touch /var/log/php_errors.log
Поскольку данный сервер используется веб-разработчиками, работающими над различными проектами, я создал для них общую группу под названием www-users
.И в этом случае я хочу, чтобы php_errors.log
был доступен для чтения и записи www-users
Я меняю владельца файла следующим образом:
sudo chown root:www-users /var/log/php_errors.log
А затем меняю права доступа к файлу следующим образом:
sudo chmod 664 /var/log/php_errors.log
Да, с точки зрения безопасности наличие файла журнала, доступного для чтения и записи любому пользователю в www-users
, не так уж и велико.Но это контролируемая общая рабочая среда.Поэтому я доверяю пользователям уважать такие вещи.И кроме того, когда PHP запускается из CLI, любому пользователю, который может это сделать, потребуется доступ на запись в журналы в любом случае, чтобы даже записать журнал.
Далее перейдите в /etc/php5/cli/php.ini
, чтобы настроить Ubuntu по умолчанию.Настройки 12.04 для соответствия этому новому файлу журнала:
sudo nano /etc/php5/cli/php.ini
Счастливо log_errors
включен по умолчанию в Ubuntu 12.04:
log_errors = On
Но чтобы разрешить запись в файл, нам нужно изменитьerror_log
для соответствия новому файлу следующим образом:
error_log = /var/log/php_errors.log
Настройка logrotate.d
сценария.
Теперь это должно быть так, но я не хочу, чтобы журналы запускалисьиз-под контроля я установил logrotate.d
для php_errors.log
.Создайте файл с именем php-cli
в /etc/logrotate.d/
следующим образом:
sudo nano /etc/logrotate.d/php-cli
и поместите туда содержимое этого скрипта демона вращения:
/var/log/php_errors.log {
weekly
missingok
rotate 13
compress
delaycompress
copytruncate
notifempty
create 664 root www-users
sharedscripts
}
Проверка настройки.
Сделав это, давайте проверим настройку, используя David Chan
, приведенный выше совет:
php -r "error_log('This is an error test that we hope works.');"
Если все прошло правильно, вы должны просто вернуться кпустая командная строка, поскольку ошибки PHP CLI больше не отправляются на стандартный вывод.Поэтому проверьте фактическое php_errors.log
для сообщения об ошибке теста, например:
tail -n 10 /var/log/php_errors.log
И там должна быть строка ошибки с отметкой времени, которая выглядит примерно так:
[23-Jul-2014 16:04:56 UTC] This is an error test that we hope works.