#php #curl #ftp
Добрый день. Есть код на PHP который получает список файлов с FTP сервера. Код работает через прокси, который поддерживает режим FTP over HTTP. Вот сам код $proxy_host = "1.1.1.1"; $proxy_port = 8080; $curl = curl_init(); $ftp_url = 'ftp://login:password@ftp:21/dir'; curl_setopt($curl,CURLOPT_TIMEOUT,10); curl_setopt($curl,CURLOPT_RETURNTRANSFER,1); curl_setopt($curl,CURLOPT_FTPLISTONLY,1); curl_setopt($curl,CURLOPT_PROXYTYPE,CURLPROXY_HTTP); curl_setopt($curl,CURLOPT_PROXY,$proxy_host); curl_setopt($curl,CURLOPT_PROXYPORT,$proxy_port); curl_setopt($curl,CURLOPT_PROXYUSERPWD,'login_proxy:password_proxy'); curl_setopt($curl,CURLOPT_URL,$ftp_url); curl_setopt($curl,CURLOPT_VERBOSE,FALSE); curl_setopt($curl,CURLOPT_HEADER,0); $content=curl_exec($curl); echo $content; Код работает прекрасно, однако вывод списка файлов всегда предваряет сообщение curl 230 OK. Current restricted directory is /. Это сообщение присутствует даже тогда когда я пытаюсь скачать файлы. То есть содержимое всех скачанных файлов содержит это диагностическое сообщение. Как отключить вывод этого сообщения? Дополнение Параметр CURLOPT_VERBOSE (true,false,отсутствует) никак не влияет на сообщение. Есть подозрение что он включен по умолчанию и не отключается. Еще дополнения пробовал на версиях PHP 5.3.13 и 5.6.30 версия curl (из phpinfo) 7.24.0 Важно то, что без proxy сервера все работает отлично.
Ответы
Ответ 1
curl 230 OK. Current restricted directory is / Это сообщение выводится не из php, а из прокси-программы через которую вы отправляете запрос. Я не знаю что за софт там стоит может быть это 'Pure-FTPd' или что-то в этом роде. Но похоже что это он делает STDOUT перед показом того что вы запросили.. и соответственно ваш курл уже все это и подтягивает. Нужно уже смотреть в сторону как это заглушить, отправить в > /dev/null, смотреть конфиги и т.д.Ответ 2
Попробуйте опции CURLOPT_HEADER или CURLINFO_HEADER_OUT (а, вероятно, и обе вместе) поставить в false. Тут описаны дополнительные опции, пошарьтесь в них если не помогло.Ответ 3
Если внимательно прочитать CURLOPT_VERBOSE : TRUE для вывода подробной информации. Записывает вывод в STDERR или файл, указанный с помощью CURLOPT_STDERR. По скольку CURLOPT_VERBOSE - FALSE ничего не сказано, и притом в вашем случае он не соответствует логическому продолжению,то думаю что с использованием опции CURLOPT_STDERR поможет решить вашу проблему. Замените: ..... curl_setopt($curl,CURLOPT_VERBOSE,FALSE); ..... На: Заранее создайте файл curl.txt ..... $stderr = fopen("curl.txt", "w"); curl_setopt($curl, CURLOPT_VERBOSE, TRUE); curl_setopt($curl, CURLOPT_STDERR, $stderr); .....
Комментариев нет:
Отправить комментарий