我有一个php-fpm的问题。 它实际上是php7版本。 我有Drupal,它会抱怨某些目录不可写。 只有当我启动php-fpm作为这样的服务:
#service php-fpm start
我使用nginx作为web服务器和php-fpm,在端口127.0.0.1:9000。 这是我在/etc/php-fpm.d/www.conf中的conf:
; Start a new pool named 'www'. [www] user = nginx group = nginx listen = 127.0.0.1:9000
web的所有文档 – drupal – 属于nginx:nginx。 如果我开始服务,也是
#service php-fpm start
要么
#systemctl启动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 –nodeemonize –fpm-config /etc/php-fpm.conf
服务中描述的是哪个命令(/usr/lib/systemd/system/php-fpm.service) – 然后我没有权限问题。
ps aux |的输出 grep php-fpm是相同的,nginx是用户。
我正在执行一切作为根。
这怎么可能?
这已成为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
selinuxconfiguration是这样的:
SELINUX=enforcing SELINUXTYPE=targeted
我应该做什么改变?
( 这里有一种说法,它的设置方式,应该没有权限问题)
(我试图改变目录“香草Drupal”的上下文看起来一样的HTML(我认为,如果我已经把目录里面的HTML我不会有任何问题),通过改变用户。更多的错误(禁止{execmem})。
您需要更改Drupal需要写入httpd_sys_rw_content_t
所有文件的SELinux上下文,如下所示:
semanage fcontext -a -t httpd_sys_rw_content_t'/usr/share/nginx/html/drupal/admin/config/media/file-system(/.*)?'
我不知道你的path是什么,你需要检查在Configuration
– > Media
– > Filesystem
Drupal界面以获取更多信息。