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

基于wordpress:php8.3-fpm-alpine与nginx:stable-alpine的镜像迁移问题排查

问题排查与解决

1. Nginx "directory index forbidden" 错误

可能原因

  • Nginx配置未指定正确的索引文件,默认未包含index.php
  • Nginx无法通过FastCGI连接到PHP-FPM容器,导致无法解析PHP索引文件
  • /var/www/html目录或文件权限不正确,Nginx进程(nginx用户)无读取权限
  • Nginx配置中的root路径指向错误,未对应到WordPress的实际根目录

解决步骤

  • 修改nginx.conf,确保index指令包含PHP文件:
    index index.php index.html index.htm;
    
  • 确认Nginx配置中已正确配置FastCGI转发到PHP-FPM服务(如果是Docker Compose部署,需使用服务名作为地址,比如wordpress:9000):
    location ~ \.php$ {
        fastcgi_pass wordpress:9000; # 替换为你的PHP-FPM容器/服务名
        fastcgi_index index.php;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        include fastcgi_params;
    }
    
  • 检查目录权限,确保/var/www/html及其文件的所有者/组包含nginx用户,或设置全局可读:
    chown -R nginx:nginx /var/www/html
    # 或临时设置权限调试
    chmod -R 755 /var/www/html
    
  • 验证nginx.conf中的root指令是否指向/var/www/html(WordPress默认根目录):
    server {
        listen 80;
        root /var/www/html;
        # ... 其他配置
    }
    

2. docker exec 找不到bash的问题

可能原因

  • 多阶段构建时,安装bash的步骤未保留到最终镜像(比如在PHP-FPM阶段安装,但最终运行的是Nginx镜像)
  • 虽然安装了bash,但docker exec未指定完整路径,或容器的$PATH环境变量未包含/bin
  • 容器启动时使用的用户无执行bash的权限

解决步骤

  • 确认Dockerfile中是在Nginx镜像阶段安装bash(因为你exec的是Nginx容器):
    FROM nginx:stable-alpine
    RUN apk add --no-cache bash
    # ... 其他配置
    
  • 执行exec时指定bash的完整路径:
    docker exec -it my_container /bin/bash
    
  • 检查容器的$PATH变量,若缺失/bin,可在Dockerfile中添加:
    ENV PATH="/bin:$PATH"
    
  • 若容器以非root用户运行,确保该用户对/bin/bash有执行权限:
    chmod +x /bin/bash
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 08:12:18