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

RockyLinux+PHP+Apache容器报503 Service Unavailable错误解决方法

503错误根因

Rocky Linux 官方源提供的php包默认采用php-fpm(FastCGI进程管理器)模式运行,Apache安装对应PHP相关组件后会自动生成反向代理配置,把.php结尾的请求转发给本地监听的php-fpm服务处理。
你的镜像启动时仅启动了Apache进程,没有启动php-fpm服务,Apache无法连接到后端PHP解析进程,就会直接返回503 Service Unavailable错误。

可行修复步骤
  • 第一步:快速验证问题
    启动容器后进入容器内部,执行以下命令手动启动php-fpm,再刷新访问页面:
    php-fpm
    
    注意:容器环境默认没有运行systemd守护进程,不要用systemctl start php-fpm启动,直接执行php-fpm二进制即可。启动后执行ps aux | grep php-fpm能看到fpm的master和worker进程即为启动成功。
    如果此时页面访问恢复正常,即可确认是php-fpm未启动导致的问题。
  • 第二步:修正Dockerfile配置
    你当前的Dockerfile存在两个可优化/修复点:一是启动命令未包含php-fpm启动逻辑,二是不需要手动创建/run/php-fpm目录,php-fpm启动时会自动生成该目录及所需的Unix套接字文件。
    修正后的参考Dockerfile如下:
    RUN dnf update -y && \
        dnf install -y httpd php procps net-tools findutils vim git && \
        dnf clean all
    ADD index.php /var/www/html/
    # 先启动php-fpm(默认后台运行),再以前台模式启动Apache作为容器主进程,避免容器退出
    CMD ["/bin/bash", "-c", "php-fpm && httpd -D FOREGROUND"]
    
  • 第三步:异常排查(可选)
    如果按上述配置修改后仍有访问异常,进入容器检查php-fpm生成的套接字文件权限:
    ls -l /run/php-fpm/www.sock
    
    确保运行Apache的apache用户对该文件有读写权限,默认安装配置下权限会自动匹配,不需要手动修改。
额外优化建议
  • 把多个分散的dnf install命令合并为一层,安装完成后加dnf clean all清理rpm缓存,可以大幅缩小最终镜像体积
  • 删除手动创建/run/php-fpm的步骤,php-fpm启动时会自动生成对应目录和套接字文件,多余步骤会增加不必要的镜像层

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 23:01:11