这个最好用我认为的代码来解释。 从网站目录中:
vi get.php
添加这个PHP到get.php
<? echo file_get_contents("http://IPOFTHESERVER/"); ?>
IPOFTHESERVER是运行nginx和PHP的服务器的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。