How to get the FTP error when using PHP
Solution 1
Looking at the FTP API here:
http://us.php.net/manual/en/function.ftp-rename.php
There doesn't seem to be any way to get anything but true or false.
However, you could use ftp_raw to send a raw RENAME command, and then parse the returned message.
Solution 2
You could use error_get_last() if return value is false.
Solution 3
I'm doing something like:
$trackErrors = ini_get('track_errors');
ini_set('track_errors', 1);
if (!@ftp_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);
EDIT:
Note that $php_errormsg is deprecated as of PHP 7.
Use error_get_last() instead.
See answer by @Sascha Schmidt
Solution 4
Based on @Sascha Schmidt answer, you could do something like this:
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";
print_r( error_get_last() ); // ADDED THIS LINE
}
print_r will display the contents of the error_get_last() array so you can pinpoint the error.
AmbroseChapel
Updated on June 22, 2020Comments
-
AmbroseChapel almost 4 years
I have a script which logs on to a remote server and tries to rename files, using PHP.
The code currently looks something like this example from the php.net website:
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"; }
but ... what was the error? Permissions, no such directory, disk full?
How can I get PHP to return the FTP error? Something like this:
echo "There was a problem while renaming $old_file to $new_file: the server says $error_message\n";