2009-02-17 2 views
0

Я пытаюсь использовать CURL с PHP и его дает мне эту ошибку:Curl - Операция не допускается ошибка

«Не удалось подключиться к 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, я попытался изменить права доступа к файлу 777.

Любые идеи?

ответ

0

Вы должны попробовать использовать версию завитка, установленную на сервере или на вашей рабочей станции (версия командной строки), и попытаться выполнить репликацию этой ошибки, вам может потребоваться установить заголовок реферера в запросе на завивки, но все зависит от сервер, с которым вы пытаетесь связаться.

0

Может возникнуть проблема с прокси-сервером или какая-либо проблема проверки подлинности на сервере - можете ли вы получить доступ к этому URL-адресу с помощью обычного веб-браузера?

1

Возможно, вам необходимо включить allow_url_fopen (reference) - вы можете сделать это в файле .htaccess, если он находится на apache.

Вы можете включить это, помещая это в файле .htaccess:

php allow_url_fopen on 
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 таким образом, чтобы вы могли определить, где проблема сидит легко.

1

Многие хостинг-провайдеры запрещают исходящие соединения. Bluehost, например, требует, чтобы вы приобрели статический IP-адрес, прежде чем разрешать исходящие подключения. Затем вам нужно убедиться, что CURL знает, что использовать исходящий интерфейс.

+0

это неправда. У меня есть общий план хостинга с bluehost, и он отлично работает при использовании curl для выполнения исходящих подключений. Я запускаю сайт вентилятора WoW, который ежедневно делает около 20000 исходящих соединений. – Jayrox

1

Ошибка, которую вы получаете, скорее всего, сделает брандмауэр, блокирующий все исходящие соединения. Многие хостинг-провайдеры блокируют исходящие соединения с портом 80, чтобы попытаться остановить необузданные ошибки в скриптах PHP, которые позволяют удаленному включению, чтобы затем использоваться как вектор атаки против сервера.

Обратитесь к своему хозяину, и если это так, вам нужно будет найти альтернативный способ подключения к удаленному хосту или переместить хостинговые компании.