У меня проблема с php-fpm. На самом деле это версия php7. У меня есть drupal, и он будет жаловаться, что какой-то каталог недоступен для записи. Только если я запустил php-fpm как такую службу:
#service php-fpm start
Я использую nginx как веб-сервер и php-fpm в порту 127.0.0.1:9000. Это моя конфигурация в /etc/php-fpm.d/www.conf:
; Start a new pool named 'www'.
[www]
user = nginx
group = nginx
listen = 127.0.0.1:9000
Все документы для Интернета - drupal - принадлежат nginx: nginx. Если я запустил службу, либо
#service php-fpm start
, либо
#systemctl start php-fpm
Он будет жаловаться на разрешения, даже если этот ps показывает это (ps aux | grep php -fpm):
root 1591 0.0 0.8 528916 31260 ? Ss 07:49 0:00 php-fpm: master process (/etc/php-fpm.conf)
nginx 1593 0.0 2.2 567252 79768 ? S 07:49 0:03 php-fpm: pool www
nginx 1594 0.0 1.9 565248 72004 ? S 07:49 0:01 php-fpm: pool www
nginx 1595 0.0 2.0 567268 73040 ? S 07:49 0:02 php-fpm: pool www
nginx 1596 0.0 2.0 573440 75320 ? S 07:49 0:01 php-fpm: pool www
nginx 1597 0.0 1.9 568704 71812 ? S 07:49 0:02 php-fpm: pool www
nginx 1600 0.0 2.0 572360 74632 ? S 07:50 0:01 php-fpm: pool www
nginx 1604 0.0 1.8 565264 68584 ? S 07:53 0:01 php-fpm: pool www
Похоже, пользователь был правильно настроен. Но это не работает.
Я действительно не понимаю, что если я выполню это:
# / usr / sbin / php-fpm --nodaemonize --fpm-config /etc/php-fpm.conf
- это команда, описанная в службе (/usr/lib/systemd/system/php-fpm.service) - Тогда у меня нет проблем с разрешениями.
Вывод ps aux | grep php-fpm то же самое, но nginx является пользователем.
Я все выполняю как root.
Как это возможно?
Это стало вопросом SElinux. У меня есть это в журналах аудита:
denied { write } for pid=2755 comm="php-fpm" name="files" dev="xvda1" ino=9167949 scontext=system_u:system_r:httpd_t:s0 tcontext=unconfined_u:object_r:httpd_sys_content_t:s0 tclass=dir
Каталог, который я хочу записать в php-fpm, называется vanilladrupal
# ls -Z .
drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 html
drwxr-xr-x. nginx nginx unconfined_u:object_r:httpd_sys_content_t:s0 vanilladrupal
Процесс php-fpm имеет следующий контекст:
ps Zaux | grep php-fpm
system_u:system_r:httpd_t:s0 root 2749 0.0 0.8 528916 31212 ? Ss 03:03 0:00 php-fpm: master process (/etc/php-fpm.conf)
system_u:system_r:httpd_t:s0 nginx 2751 0.0 0.5 529548 19456 ? S 03:03 0:00 php-fpm: pool www
and the other pool wwww look the same
Конфигурация selinux следующая:
SELINUX=enforcing
SELINUXTYPE=targeted
What что мне делать?
( здесь , вроде как аргумент в пользу того, что способ его установки не должен иметь проблем с правами доступа)
(Я пытался изменить контекст для каталога "vanilla drupal" чтобы выглядеть так же, как html (я предполагаю, что если бы я поместил каталог в html, у меня не было бы никаких проблем), изменив пользователя. Но у меня просто появилось еще больше ошибок (запрещено {execmem}).
Вам нужно изменить SELinux контекст для всех файлов, где Drupal должен записывать в httpd_sys_rw_content_t
, что-то вроде этого:
семантический fcontext -a -t httpd_sys_rw_content_t '/usr/share/nginx/html/drupal/admin/config/media/file-system(/. *)?'
Я не знаю, какие у вас пути, и вам нужно проверить в интерфейсе Drupal в Configuration
-> Media
-> Filesystem
для получения дополнительной информации.