无法通过PHP脚本访问文件,但可以在浏览器中打开它

时间:2014-12-18 16:11:21

标签: php

我有一个RSS源的网址:

$url = 'http://www.myurl.com/sth?format=RSS';

我可以在浏览器中打开它而不会出现问题。但是

$feed->load($url) 

返回'false'。所以我开始调查:

$ch = curl_init($file);
curl_setopt($ch, CURLOPT_NOBODY, true);
curl_exec($ch);
$retcode = curl_getinfo($ch, CURLINFO_HTTP_CODE);           
print curl_error($ch); // prints 'couldn't connect to host'
echo "CODE: ".$retcode; // $retcode is 0

$file_headers = get_headers($file);
echo $file_headers[0]; // is null

那么,这种行为的原因是什么? myurl.com服务器上是否有某些端口被阻止?有没有办法解决它(比如创建文件的本地副本并对其进行处理)?

3 个答案:

答案 0 :(得分:0)

可能该网站有一些实施外部连接的块,例如检查用户代理,推荐......

答案 1 :(得分:0)

也许服务器正在做一些嗅探,并且如果发现curl正在进行工作,则不会在该URL上提供任何内容。你可以尝试使用phantomJS和/或Selenium来绕过这些过滤器。 Selenium有PHP绑定。

答案 2 :(得分:-1)

如果您使用的是CentOS(关于该风格的已知问题),请执行以下操作以测试并确保不是问题。稍后您可以稍后发出特定的过滤。

> emacs  /etc/selinux/config

locate following line
SELINUX=enforcing

Change this to
SELINUX=disabled

保存文件,然后重试。如果您可以在浏览器中打开它而没有问题,它可能是您的本地主机防火墙。

如果这是一个问题,请将SELinux设置回enforcing并发出

setsebool -P httpd_can_network_connect

如果您希望httpd能够连接到tcp端口