php скрипт на хостинге Windows не перечисляет ftp файлы (проблемы с ftp_rawlist) - PullRequest
1 голос
/ 30 января 2012

Я пытаюсь перечислить некоторые файлы с внешнего FTP-сервера, используя функции php ftp на виртуальном хостинге Windows, но у меня возникло несколько проблем.

Сначала я попробовал пару веб-приложений, таких как ajaxplorer и net2ftp, но я разочаровался и решил сделать очень простой скрипт для тестирования ..

<?php   
$ftp_server = "alinuxftpserver";
$ftp_user = "user";
$ftp_pass = "pass";

// set up a connection or die
$conn_id = ftp_connect($ftp_server) or die("Couldn't connect to $ftp_server");

// change temp folder (windows)
putenv("TMP=D://inetpub//webs//domain//net2ftp//tmp");
echo getenv('TMP'); 

// try to login
if (@ftp_login($conn_id, $ftp_user, $ftp_pass)) 
{
    echo "Connected as $ftp_user@$ftp_server\n";
} 
else 
{
    echo "Couldn't connect as $ftp_user@$ftp_server\n";
}

if(ftp_pasv( $conn_id, true )) 
      echo "Passive mode, it worked<br/>"; 
    else 
      echo "Passive mode, it didn't work<br/>";

$contents = ftp_rawlist($conn_id, ".");
var_dump($contents);

ftp_close($conn_id);  

die;

?>

На моем локальном хосте (linux) он возвращает массив, в то время как на хостинге Windows он возвращает:

Warning: ftp_rawlist() [function.ftp-rawlist]: php_connect_nonb() failed: No such file or directory (2) in D:\inetpub\webs\domain\ftp.php on line 26
bool(false)

Не могу понять ... каталог должен быть "/" на внешнем ftp-сервере и, конечно, есть несколько файлов и папок (2 папки и 1 файл) .. На самом деле, на моей установке MAMP это работает хорошо.

Хостинг, ребята сказали мне, что конфигурация сервера в порядке.

Ответы [ 4 ]

3 голосов
/ 20 марта 2013

использовать ftp_pasv ($ conn_id, true);некоторые ftp-соединения будут работать только в пассивном режиме

0 голосов
/ 03 сентября 2014

Лучше поздно, чем никогда ... У меня была такая же проблема. С сервером Linux все работало замечательно, но с Windows Server (много версий) у нас было много проблем, в том числе с ftp_nlist (), возвращавшим пустой массив. Это сработало для нас, но я не знаю почему!

ftp_nlist($handler, '*');
0 голосов
/ 07 августа 2012

Проверьте логи вашего FTP сервера.В моем случае для pasv_address был задан неправильный IP-адрес.

0 голосов
/ 30 января 2012

Я не уверен на 100%, но, думаю, вам следует использовать $contents = ftp_rawlist($conn_id, "/"); вместо $contents = ftp_rawlist($conn_id, ".");

...