在 CentOS 上配置 PHP 相关权限,通常是为了解决 Web 访问、文件读写、上传目录、Session 等权限问题。下面按常见场景给你一套标准做法。
CentOS 常见两种运行方式:
ps aux | grep httpd
用户一般是:
apache
ps aux | grep php-fpm
用户一般是:
nginx 或 php-fpm
配置文件:
vim /etc/php-fpm.d/www.conf
看这两行:
user = nginx
group = nginx
假设网站目录是:
/var/www/html
chown -R nginx:nginx /var/www/html
# 或 apache:apache
# 目录 755
find /var/www/html -type d -exec chmod 755 {} \;
# 文件 644
find /var/www/html -type f -exec chmod 644 {} \;
如果有上传目录:
/var/www/html/uploads
chown -R nginx:nginx /var/www/html/uploads
chmod -R 755 /var/www/html/uploads
⚠️ 不要设 777,有安全风险
报错常见:
Failed to write session data
解决:
chown -R nginx:nginx /var/lib/php/session
chmod -R 700 /var/lib/php/session
路径可能不同:
php -i | grep session.save_path
CentOS 默认开启 SELinux,经常导致 PHP 无法写文件。
getenforce
setenforce 0
# 允许 httpd 写文件
setsebool -P httpd_unified 1
# 设置 web 目录安全上下文
semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/html(/.*)?"
restorecon -Rv /var/www/html
vim /etc/php.ini
常见安全项:
file_uploads = On
upload_max_filesize = 20M
post_max_size = 20M
disable_functions = exec,passthru,shell_exec
| 问题 | 原因 |
|---|---|
| 403 Forbidden | 目录无执行权限 |
| 文件无法上传 | 上传目录用户不对 |
| Session 报错 | session 目录权限错误 |
| 本地能写,线上不能 | SELinux |
如果你能告诉我:
我可以给你精确命令。