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

时间:2011-08-29 13:24:06

标签: php curl nginx file-get-contents

我认为最好用代码解释这个。从网络目录:

vi get.php

将此php添加到get.php

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

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

php get.php

返回在该I.P.上托管的(默认)网站的内容。 BUT

http://IPOFTHESERVER/get.php

..返回 504 Gateway Time-out 。卷曲也一样。使用PHP exec命令和GET是一样的。但是,从命令行直接它一切正常。

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

任何人都有任何想法?

谢谢!

2 个答案:

答案 0 :(得分:7)

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

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

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

答案 1 :(得分:0)

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