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

Docker部署Core PHP项目遇404 Not Found错误求助

解决Core PHP项目Docker部署404 Not Found问题

以下是针对你遇到的问题的排查和解决步骤:

1. 验证项目文件挂载是否正确

首先确认本地./sms目录下存在项目核心文件(尤其是入口文件如index.php),并检查容器内的挂载目录是否同步:

docker exec -it php_app ls -la /var/www/html

如果容器内/var/www/html目录为空或缺少入口文件,说明本地./sms路径错误或文件未放置到位,调整本地文件位置后重启容器。

2. 检查Apache默认索引文件配置

Apache默认仅识别index.html、index.php等有限的索引文件名,如果你的项目入口是其他文件名(如home.php),需要修改Apache的索引列表:
在Dockerfile中添加以下内容:

# 追加自定义索引文件名到Apache配置
RUN echo "DirectoryIndex index.php home.php" >> /etc/apache2/mods-available/dir.conf

修改后重新构建镜像并启动容器。

3. 配置Apache允许URL重写(若项目使用.htaccess)

虽然你已启用rewrite模块,但默认站点配置未允许.htaccess生效,需自定义Apache站点配置:

  1. 本地创建./apache-config/000-default.conf文件,内容如下:
<VirtualHost *:80>
    ServerAdmin webmaster@localhost
    DocumentRoot /var/www/html

    ErrorLog ${APACHE_LOG_DIR}/error.log
    CustomLog ${APACHE_LOG_DIR}/access.log combined

    <Directory /var/www/html>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Require all granted
    </Directory>
</VirtualHost>
  1. 在docker-compose.yml的app服务volumes中添加挂载:
volumes:
  - ./sms:/var/www/html
  - ./logs:/var/log/apache2
  - ./apache-config/000-default.conf:/etc/apache2/sites-available/000-default.conf

4. 重新构建并启动容器

修改配置后,执行以下命令更新容器:

docker-compose down
docker-compose build --no-cache
docker-compose up -d

5. 通过日志定位具体问题

查看Apache错误日志获取404的详细原因:

cat ./logs/error.log

日志会显示具体找不到的文件路径,帮助你快速定位是文件缺失、路径错误还是权限问题。

6. 修复文件权限(若日志提示权限错误)

如果日志显示权限相关错误,执行以下命令调整本地./sms目录权限:

sudo chown -R www-data:www-data ./sms
sudo chmod -R 755 ./sms

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 22:48:16