Plesk环境下PrestaShop 1.7文件权限异常(666/777)及umask问题求助
解决PrestaShop 1.7在Plesk Onyx CentOS7上的权限异常问题
这种权限自动变为666/777的情况确实存在不小的安全风险,我帮你梳理下问题根源和可落地的解决步骤:
问题根源拆解
通常是两个层面的配置叠加导致的:
- PHP-FPM进程的默认
umask设置过松,没有限制其他用户的写权限 - PrestaShop应用本身在生成缓存、模块文件时,可能默认使用了宽松的权限掩码
下面是分步解决方案:
1. 调整PHP-FPM的umask配置
PHP-FPM的进程权限直接决定了它生成文件的权限,我们需要强制它使用严格的掩码:
- 登录服务器SSH,切换到root用户
- 找到对应域名的PHP-FPM配置文件,路径一般是:
/var/www/vhosts/system/[你的域名]/conf/php-fpm.conf - 在文件末尾添加一行:
这个掩码会让生成的文件默认是644,文件夹默认755(逻辑是666-022=644,777-022=755)umask = 0022 - 重启对应版本的PHP-FPM服务,比如你的是PHP7,执行:
(如果是其他PHP7子版本,替换成systemctl restart php7.4-fpmphp7.3-fpm等即可)
2. 覆盖PrestaShop的默认umask设置
有些时候PrestaShop的核心代码会主动设置宽松的umask,我们需要在应用层面强制修正:
- 进入PrestaShop的根目录,打开
config/config.inc.php文件 - 在
<?php之后、其他代码之前添加一行:
这会确保应用在执行任何文件操作前,都使用严格的权限掩码umask(0022);
3. 修复已存在的危险权限文件
已经生成的666/777权限文件需要批量修正,消除安全隐患:
- 在PrestaShop根目录执行以下命令:
# 批量设置所有文件为644 find . -type f -exec chmod 644 {} \; # 批量设置所有文件夹为755 find . -type d -exec chmod 755 {} \; # 修正文件所属用户和组(替换[你的域名用户]为Plesk里的独立用户名,组固定为psacln) chown -R [你的域名用户]:psacln .
4. 验证Plesk面板的权限配置
最后确认Plesk的主机设置没有拖后腿:
- 登录Plesk面板,进入对应域名的「主机设置」
- 找到「文件权限」区域,确认「默认文件权限」是644,「默认目录权限」是755
- 检查「PHP处理程序」是否设置为PHP-FPM,且运行用户是域名对应的独立用户(不要用apache或nginx的系统用户)
验证效果
完成以上步骤后,你可以尝试在后台添加一个新模块,或者清空缓存重新生成,然后检查新生成的文件/文件夹权限,应该已经稳定在644/755了。
内容的提问来源于stack exchange,提问作者gennaris
相关产品推荐
相关产品推荐

