Предупреждение PHP ftp_put Предупреждение: ftp_put () [function.ftp-put]: введите значение I. in - PullRequest
9 голосов
/ 27 мая 2011

Когда я пытаюсь загрузить файлы с помощью PHP-функции ftp_put, раньше это было с ошибкой:

Warning: ftp_put() [function.ftp-put]: No data connection

Теперь я попытался включить пассивный режим:

ftp_pasv($conn_id, true);

затем появляется ошибка:

Warning: ftp_put() [function.ftp-put]: Type set to I. in

ftp_login выполнен правильно, и он говорит успешно.

Теперь выдается новое предупреждение: Предупреждение: ftp_put() [function.ftp-put]: abc.txt: Cannot open or remove a file containing a running program.

Есть идеи, почему файл не передается?

Спасибо!

Вот мой фрагмент кода:

    $conn_id = ftp_connect($ftp_server) or die("Couldn't connect to $ftp_server");

    $login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass) or die("You do not have access to this ftp server!");

    if ((!$conn_id) || (!$login_result)) {
        // wont ever hit this, b/c of the die call on ftp_login
        echo "<span style='color:#FF0000'><h2>FTP connection has failed! <br />";
        echo "Attempted to connect to $ftp_server for user $ftp_user_name</h2></span>";
        exit;
    } else {
        //echo "Connected to $ftp_server, for user $ftp_user_name <br />";
    }

    //turn passive mode on
    ftp_pasv($conn_id, true);

    $upload = ftp_put($conn_id, $destination_file.$name, $filename, FTP_BINARY);

    if (!$upload) {
        echo "<span style='color:#FF0000'><h2>FTP upload of $filename has failed!</h2></span> <br />";
    } else {
        echo 'Uploaded';    
    }

 ftp_close($conn_id);

Ответы [ 6 ]

14 голосов
/ 15 июня 2015

http://php.net/ftp_pasv

$resource = ftp_connect('ftp.example.com');
ftp_login($resource, 'username', 'password');

# set this to true
ftp_pasv($resource, true);

ftp_get(...);
ftp_put(...);

Я получаю такое же (не очень описательное) сообщение об ошибке E_WARNING ftp_get(): Type set to I..

Я обнаружил, что это потому, что сервер под управлением PHP не имел видимогообщедоступный IP-адрес (это виртуальный сервер на моей рабочей станции).

Решением было использование пассивного режима .Настройка по умолчанию (активный режим) не имела проблем на живом сервере, потому что у живого сервера есть видимый общедоступный IP-адрес.

3 голосов
/ 27 мая 2011

Я пытался использовать функции ftp в PHP и обнаружил, что использовать file_put_contents() гораздо проще, например:

$remote_file = "ftp://username:password@host.com/path/to/file.txt";
file_put_contents($remote_file, $file_contents);

Вы все еще можете проверить, был ли он успешным, и, конечно, все это тоже хорошо.

3 голосов
/ 27 мая 2011

Последняя ошибка, с которой вы сталкиваетесь, происходит, когда демон FTP застревает с открытым загруженным файлом и ожидает, когда вы запишете его.

Каждый раз, когда вы успешно открываете соединение через FTP-сервер, будьте готовы кзакройте соединение с помощью следующей функции, когда процесс завершится или завершится из-за каких-либо ошибок.

ftp_close($conn_id);

Возможно, ваш скрипт оставляет свои соединения открытыми, и FTP-сервер из-за этого запутывается.Попробуйте добавить ftp_close в соответствующих местах и ​​посмотрите, работает ли скрипт более плавно.

0 голосов
/ 15 октября 2015

Добавьте следующие строки в конце

открыть / etc / vsftpd.conf и добавить pasv_promiscuous = YES ___ в конце.

0 голосов
/ 08 июля 2011

Я нашел его решение, как показано ниже:

Я только что говорил с поддержкой сервера EUKHOST

Главное в этом было то, что специалист поддержки теперь открыл диапазон passive port для FTP на сервереи он сказал нам попробовать загрузить FTP сейчас.Если бы вы могли попробовать это с некоторым тестовым файлом, и он прошел успешно ..

0 голосов
/ 27 мая 2011

Ваша настройка ftp выглядит нормально, попробуйте поместить имя файла $ destination_file. $ Name в одну переменную, дамп переменной и убедитесь, что этот файл существует с абсолютным путем, если он не находится в той же папке, что и ваш скрипт. Это единственная деталь, которую я быстро увидел, которая может помешать вашей загрузке.

Убедитесь, что ваш файл не открыт в редакторе! А если файл имеет формат .txt, вы можете использовать FTP_ASCII, хотя нахождение в двоичном формате не должно вызывать проблем.

Хорошо удачи!

...