嗨我正面临关于php cURL
的问题我正试图点击一个网址并获得一个xml
,然后将其转换为一个数组,以便在我的网站上的某个地方显示数据on localhost它的工作原理很好,但当我把它放在cpanel上时,curl请求得不到响应并继续等待响应并部分挂起浏览器,直到我重新启动browser.i curl_setopt($ch, CURLOPT_CONNECTTIMEOUT ,0);
,但仍然存在问题。
这是我的cURL
代码
if($is_url) {
if (!($fp = @ fopen($url, 'rb'))) {
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_USERAGENT,
'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.2) Gecko/20070219 Firefox/3.0.0.2');
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,true);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT ,0);
curl_setopt($ch, CURLOPT_TIMEOUT_MS, 600);
$contents = curl_exec($ch);
curl_close($ch);
if(!$contents)
return false;
}
while (!feof($fp)) {
$contents .= fread($fp, 8192);
}
fclose($fp);
} else {
$contents = $url;
}
任何关于此的帮助都会非常感激。谢谢
答案 0 :(得分:2)
由于您尝试在cPanel服务器上运行它,因此可能会禁用某些php函数。
首先要做的是检查服务器上是否启用了php函数allow_url_fopen()
。
发出php -i | grep php.ini
以检查默认加载哪个php配置文件(它是服务器上的默认值)。然后检查该php.ini文件,看看 allow_url_fopen 是开启还是关闭。
根据您的cPanel服务器配置,特定的cPanel帐户可能使用与服务器上的默认版本完全不同的php版本。
还尝试在脚本中添加一些调试,以查看确切的错误消息。您还可以检查Apache错误日志,看看是否在那里找到任何有用的信息。
答案 1 :(得分:0)
非常感谢您解决困扰我DAYS的问题。主要线索是查看Apache2日志文件。真正的Linux用户将日志称为呼叫的第一端口,但那些不使用Linux作为其主要力量的用户通常会忘记它们。 检查apache2错误日志后,我发现PHP是造成我问题的原因。更正/var/log/apache2/php.ini(或任何活动php.ini文件所在的位置),以便
extension=php_curl.dll
通过删除;激活(评论指示器)。问题解决了!