我正在尝试使用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.
有什么想法吗?
答案 0 :(得分:1)
您可能需要启用allow_url_fopen
(reference) - 如果它位于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?