cURL - 不允许操作错误

时间:2009-02-17 22:48:02

标签: php curl

我正在尝试使用cURL和PHP,它给我这个错误:

“无法连接到208.77.188.166:不允许操作”

我很确定它是服务器问题 - 但以防万一,这是我的代码:

<?php

$ch = curl_init();
$url  ="http://www.example.com";
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$output = curl_exec($ch) or die(curl_error($ch));
echo $output;

?>

在Apache上启用了cURL,我尝试将文件的权限更改为777.

有什么想法吗?

6 个答案:

答案 0 :(得分:1)

您可能需要启用allow_url_fopenreference) - 如果它位于apache上,您可以在.htaccess文件中执行此操作。

您可以通过将其放在.htaccess文件中来启用此功能:

php allow_url_fopen on

答案 1 :(得分:1)

确保设置所有必需的CURL选项:

  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_HEADER         => false,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_ENCODING       => "",
  CURLOPT_USERAGENT      => "spider",
  CURLOPT_AUTOREFERER    => true, 
  CURLOPT_CONNECTTIMEOUT => 120,
  CURLOPT_TIMEOUT        => 120,
  CURLOPT_MAXREDIRS      => 10,

我还建议你使用类似的东西来回应错误:

$hostconnect = curl_init($url);
$errmsgcurl  = curl_error($hostconnect);
echo $errmsgcurl;

以上代码未经过测试,仅作为示例。

还建议您尝试在本地apache服务器上尝试代码,这样就可以轻松判断问题所在。

答案 2 :(得分:1)

许多共享主机提供商禁止出站连接。例如,Bluehost要求您在允许出站连接之前购买静态IP。然后,您需要确保CURL知道要使用的出站接口。

答案 3 :(得分:1)

您收到的错误很可能是防火墙阻止所有出站连接。许多共享主机提供商阻止传出端口80连接,试图阻止PHP脚本中的横行错误,允许远程包含然后被用作针对服务器的攻击媒介。

请与您的主机联系,如果是这种情况,您需要找到另一种方法来连接远程主机或移动托管公司。

答案 4 :(得分:0)

您应该尝试使用服务器或工作站上安装的curl版本(命令行版本)并尝试复制错误,您可能需要在curl请求中设置referrer标头,但这一切都取决于您正试图联系的服务器。

答案 5 :(得分:0)

可能是服务器上的代理问题或某种身份验证问题 - 您是否可以使用常规Web浏览器访问此URL?