Как отключить ведение журнала запросов PHP-FPM?

Я продолжаю видеть такие журналы в моем кластере Kubernetes:

[php] - -  05/Jul/2020:20:15:55 +0000 "POST /api/bookings" 200

Как я могу их отключить?

Если PHP хочет записать ошибку или что-то в этом роде, Я хочу сохранить это, это просто журналы запросов, которые меня не интересуют (NGINX все равно будет регистрировать их второй раз).

Я использую php: 7.1-fpm

1
задан 6 July 2020 в 00:51
3 ответа

Это зависит от дистрибутива Linux, например в CentOS вы можете найти файл конфигурации в каталоге /etc/php-fpm.d и отключить ведение журнала, отредактировав несколько переменных, таких как access.log , php_admin_flag[log_errors], может быть больше (зависит от версии php).

4
ответ дан 5 July 2020 в 21:04

set

access.log = /dev/null

в файле конфигурации php-fpm. В моем примере /etc/php-fpm.d/www.conf

или для файла докера:

RUN echo "access.log = /dev/null" >> /usr/local/etc/php-fpm.d/www.conf
2
ответ дан 27 January 2021 в 21:33

Спасибо за помощь, но мне нужно было сделать лучше.

В контейнере docker я нашел файл access.log в нескольких местах.

root@8f03d2e7056f:/var/www/html# grep -r 'access.log' /usr/local/etc/
/usr/local/etc/php-fpm.d/www.conf.default:; - 'access.log'
/usr/local/etc/php-fpm.d/www.conf.default:; The access log file
/usr/local/etc/php-fpm.d/www.conf.default:;access.log = log/$pool.access.log
/usr/local/etc/php-fpm.d/www.conf.default:; The access log format.
/usr/local/etc/php-fpm.d/docker.conf:access.log = /proc/self/fd/2
/usr/local/etc/php-fpm.d/www.conf:; - 'access.log'
/usr/local/etc/php-fpm.d/www.conf:; The access log file
/usr/local/etc/php-fpm.d/www.conf:;access.log = log/$pool.access.log
/usr/local/etc/php-fpm.d/www.conf:; The access log format.
root@8f03d2e7056f:/var/www/html#

Меня особенно интересует файл docker.conf

root@8f03d2e7056f:/var/www/html# cat /usr/local/etc/php-fpm.d/docker.conf
[global]
error_log = /proc/self/fd/2

; https://github.com/docker-library/php/pull/725#issuecomment-443540114
log_limit = 8192

[www]
; if we send this to /proc/self/fd/1, it never appears
access.log = /proc/self/fd/2

clear_env = no

; Ensure worker stdout and stderr are sent to the main error log.
catch_workers_output = yes
decorate_workers_output = no
root@8f03d2e7056f:/var/www/html#

И в результате получается строка в dockerfile

RUN sed -i 's/access.log = \/proc\/self\/fd\/2/access.log = \/proc\/self\/fd\/1/g' /usr/local/etc/php-fpm.d/docker.conf

Удачи

1
ответ дан 3 August 2021 в 16:54

Теги

Похожие вопросы