问题:
file_get_contents('http://google.com');
工作正常(适用于任何外部网址)
file_get_contents('http://my.server.org/existing_file.php');
不返回任何内容,var_dump($http_response_header);
在加载任何本地网址时返回一个空数组。
我使用127.0.0.1和localhost代替域名获得相同的空响应。
我已尝试/检查过:
我尝试使用cURL
代替suggested here - 我得到相同的结果(适用于外部网址,本地空响应)。
allow_url_fopen=On
中启用了{p> cURL
和php.ini
- 这一定是正常的,因为我可以毫不费力地加载外部网址。
我不能使用phpinfo()
,因为我需要加载带有变量的URL以传递给PDF渲染器。
是否有一些其他需要更改的php.ini设置?或者可能是其他问题?我认为这是一个配置问题,因为我的代码在MAMP本地工作正常,但在生产服务器上没有。
为什么我这样做:
它全部绑定在Wordpress include
文件中 - 我基本上加载了像functions.php
这样的网址,然后我根据路径检查以加载正确的呈现模板,然后将呈现的 php提供给DOMPDF,以便即时生成PDF文件。最终,这意味着客户可以将http://my.server.org/path/to/file/?pdf-template
附加到其wordpress网站中的任何网址,并获得PDF版本。
奇怪的是,这曾经在他们的服务器上正常工作,而客户端服务器的负责人说配置没有任何改变。他们在上个月已经更改了webhost,这可能与它有关。
更新
我设法从错误日志中提取了这个
/pdf/
问题似乎也是断断续续的 - 有时 Notice: file_get_contents(): send of 2 bytes failed with errno=104 Connection reset by peer in /home/path/to/my/file.php on line 19
有效,有时它会因上述错误而失败。似乎不是一种模式。
这可能是防火墙问题吗?