Docker部署PHP项目浏览器显示空白页问题求助
排查Docker Compose下Nginx+PHP-FPM页面空白问题
针对你遇到的容器构建成功但页面空白的问题,可从以下几个方向排查:
1. 修正路径不一致问题
查看配置发现存在明显的路径冲突:
- Web服务器容器(webserver-bclinic-v1)挂载本地
./src到容器内/var/www,且Dockerfile中COPY本地src到/var/www - PHP应用容器(app-bclinic-v1)挂载本地
./api到容器内/var/www,但Dockerfile中同样COPY本地src到/var/www
这会导致Nginx请求的文件路径和PHP-FPM实际处理的代码路径不匹配。解决方法:
- 统一挂载目录:将app容器的volume改为
./src:/var/www,保持和webserver一致 - 或调整Nginx配置中的root路径,确保指向PHP代码所在的正确目录
2. 查看容器日志定位错误
直接查看日志能快速找到问题根源:
- 查看Nginx日志:
若出现docker logs webserver-bclinic-v1502 Bad Gateway,说明Nginx无法连接PHP-FPM;若出现404 Not Found,说明请求的文件不存在。 - 查看PHP-FPM日志:
检查是否有代码语法错误、依赖缺失或权限报错。docker logs app-bclinic-v1
3. 补全Composer依赖安装
app容器的Dockerfile中仅执行了RUN cd /var/www,未实际安装Composer依赖。缺少依赖会导致PHP代码无法运行,表现为页面空白。修改Dockerfile:
在RUN cd /var/www后添加:
RUN composer install --no-dev --optimize-autoloader
注意:构建时需确保本地src目录下存在composer.json和composer.lock文件。
4. 检查文件与目录权限
PHP-FPM以www-data用户运行,若代码目录权限不足,会导致无法读取文件:
- 进入app容器检查权限:
docker exec -it app-bclinic-v1 ls -l /var/www - 若权限异常,执行以下命令修复:
docker exec -it app-bclinic-v1 chown -R www-data:www-data /var/www
5. 开启PHP错误显示
默认情况下PHP可能关闭了错误输出,导致页面空白但无提示。可临时开启:
- 在PHP入口文件顶部添加:
ini_set('display_errors', 1); ini_set('error_reporting', E_ALL); - 或修改
php.ini中的配置,将display_errors设为On,error_reporting设为E_ALL。
6. 验证Nginx配置正确性
检查docker/nginx/default.conf中的PHP处理配置,确保:
fastcgi_pass指向PHP容器的服务名+端口:app-bclinic-v1:9000SCRIPT_FILENAME参数正确:$document_root$fastcgi_script_nameroot路径与PHP代码的入口目录一致(比如代码入口在/var/www/public,则root设为/var/www/public)
示例正确的PHP处理块:
location ~ \.php$ { root /var/www; fastcgi_pass app-bclinic-v1:9000; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; }
内容的提问来源于stack exchange,提问作者Lucas amaral
相关产品推荐
相关产品推荐

