cURL - ошибка операции не разрешена - PullRequest
0 голосов
/ 18 февраля 2009

Я пытаюсь использовать 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;

?>

CURL включен в Apache, я попытался изменить права доступа к файлу на 777.

Есть идеи?

Ответы [ 6 ]

1 голос
/ 05 марта 2009

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

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

1 голос
/ 05 марта 2009

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

1 голос
/ 04 марта 2009

Убедитесь, что вы установили все необходимые параметры 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 голос
/ 18 февраля 2009

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

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

php allow_url_fopen on
0 голосов
/ 18 февраля 2009

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

0 голосов
/ 18 февраля 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...