You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

RHEL9.4+NGINX环境下PHP touch()权限拒绝问题修复求助

修复PHP脚本写入权限问题的方案

1. 确认PHP-FPM的运行用户

执行命令查看PHP-FPM进程的所属用户:

ps aux | grep php-fpm

输出结果的第一列就是PHP-FPM的运行用户(常见的如apache、nginx或www-data)。

2. 给PHP-FPM用户赋予写入权限

方法一:将PHP-FPM用户加入nginx用户组(推荐)

假设查到的PHP-FPM用户是apache,执行以下命令将其加入nginx用户组:

usermod -aG nginx apache

然后重启PHP-FPM使配置生效:

systemctl restart php-fpm

由于job/目录的组权限为7(读写执行),加入nginx组后,PHP-FPM用户即可拥有该目录的写入权限。

方法二:调整job目录的属主

若不想修改用户组,可直接将job/目录的属组改为PHP-FPM用户的组(或属主改为PHP-FPM用户):
比如PHP-FPM用户是apache:

chown myuser:apache /www/html/job

修改后同样需要重启PHP-FPM。

3. 检查SELinux(RHEL默认开启,易导致权限问题)

若上述操作后仍报错,先临时关闭SELinux测试:

setenforce 0

若关闭后可正常写入,说明是SELinux限制导致,需配置永久规则:

semanage fcontext -a -t httpd_sys_rw_content_t "/www/html/job(/.*)?"
restorecon -Rv /www/html/job

该命令会给job/目录添加允许HTTP服务写入的SELinux上下文。

额外注意:NGINX与PHP-FPM的连接方式需一致

你的PHP-FPM配置使用的是Unix套接字/run/php-fpm/www.sock,但NGINX配置中fastcgi_pass写的是127.0.0.1:9000,二者需保持一致:

  • 要么将NGINX的fastcgi_pass改为unix:/run/php-fpm/www.sock
  • 要么修改PHP-FPM池配置(如/etc/php-fpm.d/www.conf),使其监听127.0.0.1:9000
    修改完成后重启NGINX和PHP-FPM服务。

内容的提问来源于stack exchange,提问作者Raptor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 22:48:16