温馨提示×

CentOS怎么设置PHP权限

小樊
47
2026-08-18 11:38:47
栏目: 编程语言

在 CentOS 上设置 PHP 权限,关键取决于 PHP 的运行方式(Apache / PHP-FPM / Nginx)网站目录的归属。下面按常见场景一步步说明。


一、先确认 PHP 是以什么方式运行的

1️⃣ Apache + mod_php(较少用于新环境)

ps aux | grep httpd

PHP 作为 Apache 模块运行,用户通常是:

  • apache

2️⃣ Nginx + PHP-FPM(最常见)

ps aux | grep php-fpm

常见用户:

  • www-data(部分系统)
  • apache(CentOS 默认)
  • nginx

CentOS 常见默认用户:

user = apache
group = apache

二、设置网站目录权限(核心)

假设你的网站目录是:

/var/www/html

✅ 推荐做法(安全 & 实用)

1️⃣ 设置目录所有者

chown -R apache:apache /var/www/html

如果你用 Nginx,但 PHP-FPM 是 apache 用户,也要用 apache

2️⃣ 设置目录权限

chmod -R 755 /var/www/html

3️⃣ 需要写入的目录(如上传、缓存)

chmod -R 777 /var/www/html/uploads

或更安全:

chmod -R 775 /var/www/html/uploads
chown -R apache:apache /var/www/html/uploads

三、SELinux 权限(CentOS 特有,非常重要)

CentOS 默认开启 SELinux,这是 PHP 没权限的最常见原因

1️⃣ 查看 SELinux 状态

getenforce
  • Enforcing ✅(需要配置)
  • Permissive ⚠️(临时关闭)
  • Disabled ❌(不推荐)

2️⃣ 给网站目录设置正确的 SELinux 上下文

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

需要写入的目录:

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

3️⃣ 允许 PHP 访问网络(如 curl、数据库)

setsebool -P httpd_can_network_connect on

四、PHP 上传文件权限示例

php.ini 关键配置

file_uploads = On
upload_max_filesize = 20M
post_max_size = 20M
upload_tmp_dir = /tmp

确保:

chown apache:apache /tmp

五、验证 PHP 当前用户

新建测试文件:

<?php
echo exec('whoami');

访问页面,确认 PHP 运行用户。


六、常见错误 & 解决方案

问题 原因 解决
无写入权限 目录属主不对 chown
403 Forbidden SELinux restorecon
上传失败 tmp 权限 chown /tmp
Nginx 正常但 PHP 不行 PHP-FPM 用户错 检查 php-fpm.d/www.conf

七、一个完整示例(Nginx + PHP-FPM)

chown -R apache:apache /var/www/html
chmod -R 755 /var/www/html

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

如果你愿意,可以告诉我:

  • ✅ CentOS 版本(7 / 8 / Stream)
  • ✅ Web 服务(Apache / Nginx)
  • ✅ PHP 版本
  • ✅ 报错信息

我可以给你 精确到命令级别 的设置方案。

0