2008-11-11 5 views
16

J'ai un script qui se connecte à un serveur distant et essaie de renommer les fichiers, en utilisant PHP.Comment obtenir l'erreur FTP lors de l'utilisation de PHP

Le code ressemble actuellement quelque chose comme cet exemple du site php.net:

if (ftp_rename($conn_id, $old_file, $new_file)) { 
echo "successfully renamed $old_file to $new_file\n"; 
} else { 
echo "There was a problem while renaming $old_file to $new_file\n"; 
} 

mais ... quelle était l'erreur? Autorisations, pas un tel répertoire, disque plein? Comment puis-je obtenir PHP pour renvoyer l'erreur FTP?

Quelque chose comme ceci:

echo "There was a problem while renaming $old_file to $new_file: 
the server says $error_message\n"; 

Répondre

26

Vous pouvez utiliser error_get_last() si la valeur de retour est false.

+3

Oui, cela est vrai dans mon cas! – Ron

+2

Ceci est toujours null pour moi. Mon problème est 'ftp_put', pas' ftp_rename', donc je ne suis pas sûr que ce soit vraiment pertinent pour l'OP. Le correctif pour moi était d'appeler 'ftp_pasv' avant' ftp_put'. Je suis sur Ubuntu 14.04 avec php 5.5.9. –

8

Je suis en train de faire quelque chose comme:

$trackErrors = ini_get('track_errors'); 
ini_set('track_errors', 1); 
if ([email protected]_put($my_ftp_conn_id, $tmpRemoteFileName, $localFileName, FTP_BINARY)) { 
    // error message is now in $php_errormsg 
    $msg = $php_errormsg; 
    ini_set('track_errors', $trackErrors); 
    throw new Exception($msg); 
} 
ini_set('track_errors', $trackErrors); 
+4

qu'est ce que $ php_errormsg? –

+0

@DanMantyla http://php.net/manual/fr/reserved.variables.phperrormsg.php – alnorth29

Questions connexes