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

Docker部署PrestaShop 8.1 FPM+Nginx时安装主题遇504超时错误

解决方案:PrestaShop 8.1 Docker安装主题时504超时+缓存路径错误问题

问题核心诊断

从日志可明确两个关键问题:

  • Symfony容器缓存尝试读取pro_路径,但实际目录为prod,说明缓存生成时的环境标识异常
  • 主题安装触发的缓存清理命令执行失败,直接引发PHP致命错误,进而导致504超时

以下是针对性修复步骤:

1. 修正环境变量与开发模式配置

检查你的.env文件,确保PS_DEV_MODE设置与实际环境一致:

  • 开发环境设为PS_DEV_MODE=1,对应dev缓存目录
  • 生产环境设为PS_DEV_MODE=0,对应prod缓存目录

注意:若之前切换过开发模式,本地挂载的src/var/cache目录会残留不同环境的缓存文件,必须彻底清理。

2. 彻底清理本地缓存目录

停止所有容器后,手动删除本地挂载目录下的缓存文件:

rm -rf ./src/var/cache/*

重启容器,让PrestaShop重新生成对应环境的缓存文件,解决路径不匹配问题。

3. 调整容器文件权限

本地挂载的src目录权限可能与容器内www-data用户不匹配,导致缓存文件无法生成。执行以下命令修复:

# 进入prestashop容器
docker exec -it prestashop bash

# 调整目录权限
chown -R www-data:www-data /var/www/html/var/cache
chmod -R 755 /var/www/html/var/cache

4. 优化Nginx的FastCGI超时配置

在Nginx的location ~ \.php$块中添加超时配置,避免PHP进程执行超时被Nginx中断:

location ~ \.php$ {
    try_files $uri =404;
    fastcgi_split_path_info ^(.+\.php)(/.+)$;
    fastcgi_pass prestashop:9000;
    fastcgi_index index.php;
    include fastcgi_params;
    fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    fastcgi_param PATH_INFO $fastcgi_path_info;
    
    # 添加超时配置
    fastcgi_connect_timeout 60s;
    fastcgi_send_timeout 60s;
    fastcgi_read_timeout 120s;
}

修改后重启Nginx容器:

docker restart nginx

5. 更换为开发环境专属镜像(可选)

如果是开发场景,建议使用PrestaShop官方开发镜像,这类镜像预配置了开发模式所需的依赖与权限:

# 在docker-compose.yml中替换prestashop镜像
image: prestashop/prestashop:8.1.1-8.1-fpm-dev

6. 跳过自动安装,手动完成主题设置

若上述步骤仍无效,可关闭自动安装,手动完成流程:

  1. 将.env中的PS_INSTALL_AUTO=0
  2. 重启容器后访问https://localhost/install,手动完成安装,在主题环节选择跳过,进入后台后再手动安装主题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 18:33:10