Docker部署Drupal本地环境时nginx无法找到index.php文件问题咨询
Nginx/Docker返回File not Found错误的可能原因
- 挂载路径不匹配:Nginx和PHP-FPM两个容器的项目根目录挂载路径必须完全一致,如果
docker-compose.yml中两个服务的挂载配置不同,Nginx传递给PHP的文件路径在PHP容器内不存在,就会返回404。比如Nginx内文件路径为/var/www/html/index.php,但PHP容器内同一路径下没有对应文件,就会触发该错误。 - 权限配置错误:Ubuntu宿主机用户的UID/GID和容器内运行PHP/Nginx服务的用户UID/GID不匹配,会导致容器没有权限读取你创建的
index.php文件,表现为文件不存在。可检查.env文件中PROJECT_USER_ID、PROJECT_GROUP_ID参数是否和你宿主机当前用户的UID/GID(可通过id命令查询)一致。 - Nginx根目录配置错误:docker4drupal默认的Nginx站点根目录为
/var/www/html/web,如果你把index.php放在项目根目录而非web子目录,或者修改了NGINX_SERVER_ROOT环境变量后和实际挂载路径不匹配,Nginx就找不到目标文件。 - 挂载规则配置错误:如果
docker-compose.yml中挂载的宿主机路径填写错误,或者宿主机路径和容器路径写反,会导致容器内根本没有你创建的index.php文件。可以分别执行docker compose exec nginx ls 你配置的站点根目录路径和docker compose exec php ls 你配置的站点根目录路径,确认文件在两个容器内都存在。 - 端口/域名匹配错误:确认你访问的
http://drupal9doc1.localhost:8000确实对应你本次启动的Nginx服务,没有和本地其他运行的Docker服务端口冲突,访问到其他服务自然找不到对应文件。 - PHP-FPM服务异常:执行
docker compose ps查看PHP服务的运行状态,如果PHP服务启动失败或者异常退出,Nginx无法转发PHP请求,也会返回File not found错误。
内容的提问来源于stack exchange,提问作者nathan111777
相关产品推荐
相关产品推荐

