没有脚本名称通过nginx/FastCGI传递给php-fpm


No script name passed to php-fpm via nginx/FastCGI

我在php-fpm上运行PHP 5.5/5.6实例没有任何问题(unix套接字和nginx)。

今天我编译了 PHP 7,并将其作为第三个 PHP 实例启动。虽然 PHP 5.5/5.6 实例为 PHP 7 实例提供请求可以正常工作,但我得到:

警告:pid 2582,fpm_request_check_timed_out(),第 277 行:[pool www0] 子项 2813,脚本"(请求:")执行超时(120.018160 秒),正在终止

在我的 php-fpm 日志文件和

[错误] 1889#0:*4 recv() 失败(104:对等方重置连接)从上游读取响应标头,客户端:xxx.xxx.xxx.20,服务器:本地主机,请求:"GET/info.php HTTP/1.1",上游:"fastcgi://unix:/var/run/php70-fpm.sock:",主机:"xxx.xxx.xxx.21"

在我的 nginx 错误日志文件中。

我使用也适用于 PHP 5.6 实例的fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name。尽管 PHP 7 的脚本文件名似乎为空。我正在请求脚本/info.php.

使用 php-fpm 的 PHP 5.x 和 7.0 有什么区别吗?


更新

至少我不是唯一一个面临这些问题的人。我在这里打开了一个错误报告:https://bugs.php.net/bug.php?id=69850

这里还报告了一个非常相似(可能相同)的错误:https://bugs.php.net/bug.php?id=69875(thx 到 @crypticツ)

更新 2

尝试最新的 alpha2。该错误已在此处修复。Unix套接字现在又像魅力一样工作了。

我不确定这是否可以被视为答案,但此时此刻,当我写这个答案时,您提出的错误已被 PHP 团队确认

[2015-06-23 12:47 UTC] remi@php.net
I confirm
PHP 5.6.10 works
PHP 7.0.0-dev (Jun 17 2015)
- network socket: OK.
- UDS: broken

更新:我刚刚看到你也知道同样的事情!