2008-11-11 20 views
16

Mam skrypt, który loguje się do zdalnego serwera i próbuje zmienić nazwy plików, używając PHP.Jak uzyskać błąd FTP podczas korzystania z PHP

Kod obecnie wygląda coś takiego przykład ze strony internetowej 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"; 
} 

ale ... Jaki był błąd? Uprawnienia, nie ma takiego katalogu, dysk jest pełny?

Jak mogę przekonać PHP, aby zwrócił błąd FTP? Coś takiego:

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

Odpowiedz

26

Można użyć error_get_last(), jeśli wartość zwracana jest false.

+3

Tak, to prawda w moim przypadku! – Ron

+2

To zawsze jest dla mnie puste. Moim problemem jest 'ftp_put', a nie' ftp_rename', więc nie jestem pewien, czy jest w pełni odpowiedni dla OP. Rozwiązaniem było dla mnie wywołanie 'ftp_pasv' przed' ftp_put'. Jestem na Ubuntu 14.04 z php 5.5.9. –

8

robię coś takiego:

$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

co to jest '$ php_errormsg'? –

+0

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

Powiązane problemy