CentOS7部署Prestashop提示var/cache无写入权限问题求助
CentOS7部署PrestaShop 1.7.7.1 var/cache权限报错修复
问题现象
安装阶段弹出报错:
Prestashop installation needs to write critical files in the folder var/cache.
please review the permissions on your server.
直接修改目录属主后报错仍存在。
已执行的无效操作
曾尝试递归修改站点目录属主为apache用户,执行命令如下,未解决问题:
chown -R apache:apache /var/www/html/prestashop
当前运行环境
- 操作系统:CentOS 7
- PrestaShop版本:1.7.7.1
- PHP版本:8.1.8
- 数据库:MySQL
修复步骤
1. 确认Web/PHP进程实际运行用户
不要直接套用apache用户配置,先执行命令确认进程真实运行用户,避免属主配置错误:
# 若使用Apache mod_php模式,查httpd进程用户 ps -ef | grep httpd # 若使用Nginx+PHP-FPM模式,查php-fpm进程用户 ps -ef | grep php-fpm
根据查询结果,将站点目录属主替换为实际运行用户,例如运行用户为nginx则执行chown -R nginx:nginx /var/www/html/prestashop。
2. 配置正确的目录权限位
仅修改属主不足以满足写入要求,执行以下命令设置规范权限:
# 站点目录文件默认644、目录默认755 find /var/www/html/prestashop -type f -exec chmod 644 {} \; find /var/www/html/prestashop -type d -exec chmod 755 {} \; # 为PrestaShop要求可写的目录设置775权限 chmod -R 775 /var/www/html/prestashop/var/ chmod -R 775 /var/www/html/prestashop/img/ chmod -R 775 /var/www/html/prestashop/config/ chmod -R 775 /var/www/html/prestashop/modules/ chmod -R 775 /var/www/html/prestashop/themes/ chmod -R 775 /var/www/html/prestashop/upload/ chmod -R 775 /var/www/html/prestashop/download/
3. 处理SELinux拦截(此类问题90%由该原因导致)
CentOS7默认开启SELinux强制模式,会拦截Web进程对目录的写入请求,即使属主、权限位配置正确也会报错。
先执行命令临时关闭SELinux验证问题:
setenforce 0
刷新安装页面如果报错消失,即可确认是SELinux导致,执行以下命令配置正确的SELinux上下文(不推荐长期关闭SELinux):
# 配置站点目录基础访问上下文 chcon -R -t httpd_sys_content_t /var/www/html/prestashop/ # 为可写目录配置读写权限上下文 chcon -R -t httpd_sys_rw_content_t /var/www/html/prestashop/var/ chcon -R -t httpd_sys_rw_content_t /var/www/html/prestashop/img/ chcon -R -t httpd_sys_rw_content_t /var/www/html/prestashop/config/ chcon -R -t httpd_sys_rw_content_t /var/www/html/prestashop/modules/ chcon -R -t httpd_sys_rw_content_t /var/www/html/prestashop/themes/ chcon -R -t httpd_sys_rw_content_t /var/www/html/prestashop/upload/ chcon -R -t httpd_sys_rw_content_t /var/www/html/prestashop/download/ # 重新开启SELinux setenforce 1
4. 额外排查项
如果以上操作完成后仍报错,检查PHP配置中open_basedir项是否限制了站点目录访问,将PrestaShop根目录加入允许列表后重启Web/PHP-FPM服务即可。
内容的提问来源于stack exchange,提问作者Anoir
相关产品推荐
相关产品推荐

