PHP-FPM Slow Log ОШИБКА: не удалось отследить (ATTACH) дочерний элемент: Operation не разрешено (1)

Я использую CentOS 7 с Nginx / PHP-FPM. Чтобы отладить пару медленных запросов Wordpress и CodeIgniter, я активировал функцию медленного журнала PHP-FPM в www-pool.conf :

slowlog = /var/log/php-fpm/www-slow.log
request_slowlog_timeout = 4s

Медленные запросы регистрируются, но значимая трассировка стека не выводится на www-slow.log . Файл создается, но пуст, и по умолчанию error.log показывает такие записи:

[12-Nov-2017 16:50:26] WARNING: [pool www] child 21497, script '/usr/share/nginx/www/wordpress/index.php' (request: "GET /index.php") executing too slow (4.161874 sec), logging
[12-Nov-2017 16:50:26] ERROR: failed to ptrace(ATTACH) child 21491: Operation not permitted (1)
[12-Nov-2017 16:50:26] WARNING: [pool www] child 21491, script '/usr/share/nginx/www/wordpress/index.php' (request: "GET /index.php") executing too slow (4.590854 sec), logging
[12-Nov-2017 16:50:26] ERROR: failed to ptrace(ATTACH) child 21490: Operation not permitted (1)
[12-Nov-2017 16:50:26] WARNING: [pool www] child 21490, script '/usr/share/nginx/www/wordpress/index.php' (request: "GET /index.php") executing too slow (4.620915 sec), logging
[12-Nov-2017 18:03:52] ERROR: failed to ptrace(ATTACH) child 21523: Operation not permitted (1)
[12-Nov-2017 18:03:52] WARNING: [pool www] child 21523, script '/usr/share/nginx/www/wordpress/wp-admin/index.php' (request: "GET /wp-admin/index.php") executing too slow (4.366918 sec), logging

Файлы / папки журнала принадлежат пользователю php-fpm, под которым запущен php-fpm.

Есть идеи?

0
задан 12 November 2017 в 20:13
1 ответ

Это вызвано SELinux, который блокирует подключение веб-сервера (и PHP, который работает в контексте веб-сервера) к процессам для отслеживания их выполнения.

Об этом было сообщено Red Некоторое время назад, но они отказались что-либо предпринять .

Вы можете проверить свой /var/log/audit/audit.log , и вы найдете это отрицание вошел в AVC, аналогичный:

 type = AVC msg = audit (21.05.2015 21: 37: 21.028: 14259): avc: denied {sys_ptrace} для pid = 1385 comm = php-fpm capacity = sys_ptrace scontext  = system_u: system_r: httpd_t: s0 tcontext = system_u: system_r: httpd_t: s0 tclass = возможность
 

Чтобы решить проблему для вашего собственного сервера, вы можете создать локальный модуль политики SELinux с помощью audit2allow . Загрузите AVC в audit2allow с помощью стандартного ввода, примерно так:

$ audit2allow -M php_ptrace

type=AVC msg=audit(05/21/2015 21:37:21.028:14259) : avc: denied { sys_ptrace } for pid=1385 comm=php-fpm capability=sys_ptrace scontext=system_u:system_r:httpd_t:s0 tcontext=system_u:system_r:httpd_t:s0 tclass=capability 

Вы запускаете команду, затем вставляете запись журнала AVC в терминал и нажимаете Ctrl - D . Вы получите сгенерированную политику и инструкции:

******************** IMPORTANT ***********************
To make this policy package active, execute:

semodule -i php_ptrace.pp

Итак, запустите эту команду, и все готово.

1
ответ дан 4 December 2019 в 16:05

Теги

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