По сути, у меня есть простая функция загрузки веб-страниц cURL, которая включает в себя следующее:
function FETCH_WEBPAGE($url) {
$curl_handle = curl_init();
curl_setopt($curl_handle, CURLOPT_URL, $url);
curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 2);
curl_setopt($curl_handle, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl_handle, CURLOPT_USERAGENT, 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.112 Safari/534.30');
$file = curl_exec($curl_handle);
if($file===false) {
DEBUG_TXT('Error reading '.$url.chr(10).curl_error($curl_handle));
} else {
DEBUG_TXT('Fetching: '.$url.' - Got: '.$response['url'].chr(10).$file);
}
$response = curl_getinfo($curl_handle);
curl_close($curl_handle);
if(trim($response['url'])=='') {
$response['url'] = $url;
}
return array('file'=>$file,'url'=>$response['url']);
}
Теперь я использую свой собственный сервер Apache, а также выделенный сервер, на котором работает Apache. Когда я запускаю этот код со своей машины, все работает гладко. Мой DEBUG_TXT возвращает ответ «Извлечение / получение» (с содержимым), если сервер, с которого я запрашиваю, доступен. (Создает текстовый файл DEBUG.)
Однако, когда я запускаю это со своего выделенного сервера, я НЕ МОГУ заставить его работать. Я всегда получаю сообщение об ошибке «Не удалось найти хост» или «Истекло время поиска имени» в качестве ошибки cURL.
Самое странное, что для других пользователей веб-сайта эта функция работает ОТЛИЧНО и не дает им ошибок - даже при попытке доступа к идентичным URL-адресам. За свою жизнь я не могу даже понять, почему это выборочно не работает для меня и для меня одного.
Edit:
Я должен упомянуть, что curl_getinfo (), кажется, работает для меня, даже когда curl_exec () не работает. Я могу получить информацию заголовка, например, отлично, но curl_exec () все равно не удастся. Меня это сильно беспокоит, так как, похоже, это напрямую связано с моей учетной записью на сайте - может ли способ, которым я получаю информацию о cookie-файлах для себя, быть связан с этой ошибкой? Я не мог себе представить, как это могло бы быть, но это буквально единственное различие (с точки зрения интерпретатора PHP) между тем, как я имею дело с тем, как я лично буду использовать функцию по сравнению с другим пользователем на сайте.
Кроме того, я могу успешно пропинговать веб-сайты, к которым пытаюсь получить доступ, со своего выделенного компьютера при подключении через SSH.