2012-02-07 2 views
2

Мы имеем в cron'й работаем на нашем сервере, который загружает данные из MeteoConsult, что некоторая нидерландская погода-отчет компания ... вещь ...Curl FTP соединение

Во всяком случае, в основном скрипт загружает XML файл с использованием FTP через cURL, который затем анализируется с помощью SimpleXML. Через неделю или две назад он решил умереть случайно и убить нашу радость от наблюдения за погодой. Я невежественна. Данные FTP верны и были проверены. Сервер Meteo не блокирует IP-адрес сервера, на котором работает cron-задание.

Почему разработчик использовал cURL для скачивания файла по FTP, для меня действительно является загадкой. Когда я запускаю скрипт на другом сервере, он работает.

С этой информацией я предполагаю, что либо мы используем «старомодный» способ, либо не работает с новыми версиями cURL/PHP, хотя я не мог найти никакой информации об этом, или брандмауэр нашего сервера блокирует связь.

Вот (часть) сценарий:

$curl = curl_init(); 
curl_setopt($curl, CURLOPT_URL,"ftp://username:[email protected]/file.xml"); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($curl, CURLOPT_TIMEOUT, 300); 
curl_setopt($curl, CURLOPT_FTP_USE_EPSV, 0); 

$xml = curl_exec($curl); 
$status = curl_getinfo($curl); 
curl_close($curl); 

// At this point, $xml is NULL 

Что случилось с этим сценарием? Если нет, вы, ребята, знаете, что может быть проблемой?

PHP version: 5.2.12 
libcurl version: 7.20.0 

Большое спасибо заранее.

+0

Вы пытались проверить наличие ошибок? http://php.net/manual/en/function.curl-error.php – Znarkus

+0

@ Znarkus Хорошая точка! 'string (24)" не удалось подключиться к хосту ". Тем не менее, это еще не совсем понятно. –

+0

Можете ли вы подключиться к FTP с сервера, используя командную строку 'curl' или' ftp'? – Znarkus

ответ

0

Хозяин недавно ужесточил безопасность своих серверов. Они должны были добавить URL в белый список.

Спасибо за все ответы.

0

Посмотрите на ответ, представленной на download a file from ftp using curl and php

В основном вам нужно выделить URI и параметры аутентификации следующим образом:

$curl = curl_init(); 
curl_setopt($curl, CURLOPT_URL, "ftp.meteocon.nl/file.xml"); #input 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); 
curl_setopt($curl, CURLOPT_FILE, $file); #output 
curl_setopt($curl, CURLOPT_USERPWD, "$_FTP[username]:$_FTP[password]"); 
curl_exec($curl); 

Я не проверял, но я надеюсь, что это помогает ,

+0

Не помогло, спасибо в любом случае. –

0

Похоже, что проблема связана с IPv6 FTP PASV. Попробуйте включить/выключить (или проверить как полностью удалить) параметр CURLOPT_FTP_USE_EPSV. Вы можете проверить это для получения дополнительной информации: IPv6 FTP PASV problems

+0

Не работал .. Спасибо в любом случае. –

Смежные вопросы