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

这个最好用我认为的代码来解释。 从网站目录中:

vi get.php 

添加这个PHP到get.php

 <? echo file_get_contents("http://IPOFTHESERVER/"); ?> 

IPOFTHESERVER是运行nginxPHP的服务器的IP地址。

 php get.php 

返回在该IP上托pipe的(默认)网站的内容但是

HTTP://IPOFTHESERVER/get.php

..返回504网关超时curl也一样。 使用PHP exec命令和GET也是一样的。 但是,从命令行直接它都可以正常工作。

我已经在2个nginx服务器上复制了它。 出于某种原因,nginx不允许我通过PHP(除非通过命令行)与运行的服务器build立HTTP连接。

任何人有任何想法为什么?

谢谢!

检查一下,你没有陷入工作人员在PHP方面的枯竭,这是我的实验室服务器设置的配置,以节省内存的问题。

基本上我忘记了你使用单个worker来处理主页面,并显示给最终用户,那么get_file_contents()函数基本上就是向同一个web服务器生成一个单独的HTTP请求,实际上需要2个worker来处理单个页面。

由于第一页使用的是最后一名工作人员,因此get_file_contents函数没有任何可用的功能,因此Nginx最终在第一页上回复了504,因为在反向代理请求上没有回复。

检查你的php.ini中的allow_url_fopen是否设置为true。