我有一个 Laravel 项目需要 PHP 7.1,但在服务器上我们使用 7.2。我们为每个项目设置了单独的 nginx 配置文件,它们都运行良好。
我决定使用 laradock 并为该项目提供 PHP 7.1。开箱即用,但... 构建 docker 镜像后,我得到了以下内容:
0 ✓ server /var/www/html/myproject.com/laradock $ docker-compose ps
Name Command State Ports
------------------------------------------------------------------------------------------
laradock_docker-in-docker_1 dockerd-entrypoint.sh Up 2375/tcp, 2376/tcp
laradock_php-fpm_1 docker-php-entrypoint php-fpm Up 9000/tcp
laradock_workspace_1 /sbin/my_init Up 0.0.0.0:2222->22/tcp
在我的 NginX 配置中,我尝试重写根位置,如下所示:
fastcgi_pass 127.0.0.1:9000;
没有运气,我得到了
2019/11/06 14:06:42 [error] 1287#1287: *1 connect() failed (111: Connection refused) while connecting to upstream, client: 84.X.XX.207, server: myproject.com, request: "GET /item/show/24401 HTTP/2.0", upstream: "fastcgi://127.0.0.1:9000", host: "myproject.com", referrer: "https://myproject.com/"
知道发生什么事了吗?:(
更新
我再次尝试,这次使用通过执行获得的 php-fpm docker 镜像的 IP 地址nspect 9d15baXXXXXX | grep IPAddress
现在,日志如下所示:
2019/11/06 14:58:49 [error] 12391#12391: *2 FastCGI sent in stderr: "Primary script unknown" while reading response header from upstream, client: 84.2.XX.XXX, server: myproject.com, request: "GET /item/show/2350 HTTP/2.0", upstream: "fastcgi://192.168.XX.X:9000", host: "myproject.com", referrer: "https://myproject.com/"
仍然有点困惑发生了什么。
更新 #2
好的,我已经弄清楚了一些事情。
首先,PHP-FPM docker 的 IP 地址在 中是好的,fastcgi_pass
但是,我必须重写fastcgi_param SCRIPT_FILENAME
。通常我$document_root$fastcgi_script_name
在那里有,但这与 docker 内部不一样。我不得不将其修改为/var/www/public$fastcgi_script_name
。但现在,这变得越来越复杂,因为现在我得到的只是一个browser error 500 message
,所以我的 NginX 中没有日志。
我该如何调试它?