2014-08-27 4 views
0

Я встречаю странное поведение с помощью простого PHP-скрипта, который загружает файл на ftp-сервер.PHP ftp upload error

Я создал следующую усеченную версию моего кода, который производит ту же ошибку:

<?php 

error_reporting(E_ALL); 
echo phpversion(); 

$ftpUrl = "mydomain"; 
$ftpUserName = "myuser"; 
$ftpPassword = 'mypass';  

$fileContents = "test"; 
file_put_contents('text.txt', $fileContents); 


//open ftp connection 
$conn_id = ftp_connect($ftpUrl, 1030); 

if(!$conn_id) 
    die('error while connecting to ftp'); 

$login_result = ftp_login($conn_id, $ftpUserName, $ftpPassword); 

if (!$login_result) 
    die('ftp login failed!'); 

//switch to passive mode 
ftp_pasv($conn_id, true); 

//upload file to ftp 
try 
{ 
    $fileToUpload = fopen('text.txt', 'r'); 

    if($fileToUpload == false) 
     die('can\'t open file to send!'); 

    $upload = ftp_fput($conn_id, 'testfile.txt', $fileToUpload, FTP_ASCII); 
} 
catch(Exception $e) 
{ 
    fclose($fileToUpload); 
    ftp_close($conn_id); 
    die('Error while uploading to ftp');    
} 

fclose($fileToUpload); 
ftp_close($conn_id); 

if (!$upload) 
    die('ftp upload failed'); 

>

На FTP-сервере клиента, я получаю следующее сообщение об ошибке при запуске скрипта. (Ошибка возникает при попытке загрузить файл, Настройка подключения к протоколирование в работах)

Warning: ftp_fput() [function.ftp-fput]: php_connect_nonb() failed: Operation now in progress (115) in {path} on line 38 

Warning: ftp_fput() [function.ftp-fput]: Type set to A in {path} on line 38 
ftp upload failed 
  • Загрузка и тот же файл с FileZilla на этот FTP-сервер работает нормально.
  • Файл содержит только несколько строк текста.
  • При запуске этого скрипта на другом сервере он отлично работает.

Сервер использует PHP версии 5.3.28

Я боролся с этой ошибкой в ​​течение нескольких часов теперь, и это сводит меня с ума. Любые подсказки?

+0

'Тип установки для Ā' является ответ от FTP-сервера признавая запрос на передачу файла в режиме ASCII. – user3338098

+0

Я считаю, что эта проблема связана с проблемами тайм-аута соединения TCP/IP. – user3338098

+0

Возможный дубликат ["php \ _connect \ _nonb() не выполнен: выполняемая операция (115)" происходит с перерывами] (http://stackoverflow.com/questions/15688331/php-connect-nonb-failed-operation-now -in-progress-115-happens-intermitten) –

ответ

-1

ftp_put() принимает имя файла имя в качестве параметра, вы передаете файл ручка

Попробуйте

ftp_put($conn_id,'testfile.txt', 'test.txt', FTP_ASCII); 
+0

Это дает мне ту же ошибку. Странная часть состоит в том, что прохождение в дескрипторе файла работает на другом ftp-сервере (с немного другой версией php). – middelpat

+0

@symcbean не использует 'ftp_put', он использует' ftp_fput', и он использует его правильно. У меня такая же неизвестная проблема. – user3338098