Nginx和PHP-cgi - 不能在服务器上的任何网站的file_get_contents

Ras*_*boy 2 php curl nginx file-get-contents

这个问题最好用我认为的代码来解释.从web目录:

vi get.php
Run Code Online (Sandbox Code Playgroud)

将此php添加到get.php

<?
echo file_get_contents("http://IPOFTHESERVER/");
?>
Run Code Online (Sandbox Code Playgroud)

IPOFTHESERVER是运行nginx和PHP的服务器的IP.

php get.php
Run Code Online (Sandbox Code Playgroud)

返回在该IP BUT上托管的(默认)网站的内容

HTTP://IPOFTHESERVER/get.php

..返回504网关超时.卷曲也一样.使用PHP exec命令和GET是一样的.但是,从命令行直接它一切正常.

我在2个nginx服务器上复制了它.由于某种原因,nginx不允许我通过PHP与其运行的服务器建立HTTP连接(除非是通过命令行).

有人有任何想法吗?

谢谢!

小智 7

检查你没有在PHP方面遇到工作人员耗尽,这是我的实验室服务器设置中配置为节省RAM的问题.

基本上我忘了您使用单个工作程序处理主页面已经显示给最终用户,然后get_file_contents()函数基本上生成一个单独的HTTP请求到同一个Web服务器,实际上需要2个工作人员进行单个页面加载.

由于第一个页面使用的是最后一个worker,因此get_file_contents函数无法使用,因此Nginx最终在第一页上回复了504,因为反向代理请求没有回复.