Curl в PHP возникают проблемы с перенаправлениями - PullRequest
1 голос
/ 31 июля 2010

Хорошо, вот код:

<?
// Getting the comic page
if (!empty($_GET['c'])) $id = $_GET['c'];
else $id = "new";

$url = "http://www.explosm.net/comics/$id/";

$curl = curl_init();

curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_FAILONERROR, 1); 
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($curl, CURLOPT_RETURNTRANSFER,1);
curl_setopt($curl, CURLOPT_TIMEOUT, 3);
curl_setopt($curl, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/534.2 (KHTML, like Gecko) Chrome/6.0.447.0 Safari/534.2"); 

$result = curl_exec($curl);
curl_close($curl);
?>

(на самом деле это длиннее, но это часть, с которой у меня проблемы)

Итак, проблема в том, что если я укажу идентификатор полосыПолучите аргумент "c" (например, "2126"), все работает нормально, и страница полосы загружается в переменную $ result.

Однако, если я укажу термин, такой как "random" или "new"(оба из них отлично работают на сайте взрыва, вы можете проверить, если хотите), $ result просто равно нулю.Чтобы проверить это, вы можете использовать эту страницу: http://expmo.1free.ws/test.php (http://expmo.1free.ws/test.php?c=2126 работает нормально, но http://expmo.1free.ws/test.php и http://expmo.1free.ws/test.php?c=random не работает)

Вы можете мне помочь?Спасибо.

1 Ответ

2 голосов
/ 31 июля 2010

Какую версию PHP вы используете? Если safe_mode включен, curl не будет следовать перенаправлениям, даже если установлен CURLOPT_FOLLOWLOCATION. Если вы включили отчет об ошибках и видите:

Предупреждение: curl_setopt () [Function.curl-setopt]: CURLOPT_FOLLOWLOCATION не может быть активируется, когда в safe_mode или open_basedir установлен ...

Тогда вы знаете, что вам придется следовать перенаправлениям вручную (поскольку вы находитесь на виртуальном хостинге и, вероятно, не можете изменить настройки safe_mode или open_basedir), проанализировав код ответа и заголовок Location самостоятельно.

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