2014-08-27 4 views
0

Je rencontre un comportement étrange avec un simple script PHP qui télécharge un fichier sur un serveur FTP.Erreur de téléchargement ftp PHP

J'ai créé la version suivante dépouillée de mon code qui produit la même erreur:

<?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'); 

>

Sur le serveur ftp du client je reçois l'erreur suivante lors de l'exécution du script. (L'erreur se produit lorsque vous essayez de télécharger le fichier, la mise en place de la connexion d'une exploitation forestière dans les travaux)

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 
  • le même fichier Transfert avec filezilla à ce serveur ftp fonctionne très bien.
  • Le fichier ne contient que quelques lignes de texte.
  • Lors de l'exécution de ce script sur un serveur différent, cela fonctionne correctement.

Le serveur utilise la version php 5.3.28

J'ai eu du mal avec cette erreur pendant des heures maintenant et il me rend fou. Des indices?

+0

'Type défini sur A' est la réponse du serveur FTP reconnaissant la demande de transfert du fichier en mode ASCII. – user3338098

+0

Je crois que ce problème est dû à des problèmes de délai de connexion TCP/IP. – user3338098

+0

Echec possible de ["php \ _connect \ _nonb(): L'opération en cours (115)" se produit par intermittence] (http://stackoverflow.com/questions/15688331/php-connect-nonb-failed-operation-now -in-progress-115-happens-intermitten) –

Répondre

-1

ftp_put() prend un fichier nom comme paramètre, vous passez un fichier poignée

Essayez

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

Cela me donne la même erreur. La partie étrange est, passant dans une poignée de fichier fonctionne sur un serveur ftp différent (avec une version php légèrement différente). – middelpat

+0

@symcbean il n'utilise pas 'ftp_put' il utilise' ftp_fput' et il l'utilise correctement. J'ai ce même problème inconnu. – user3338098

Questions connexes