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站点配置:
- 本地创建
./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>
- 在
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
相关产品推荐
相关产品推荐

