У меня есть сценарий, который регистрируется на удаленном сервере и пытается переименовать файлы, используя PHP.
В настоящее время код выглядит примерно так: веб-сайт 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"; }
но … в чем была ошибка? Разрешения, нет такой директории, диск заполнен?
Как я могу заставить PHP вернуть ошибку FTP? Что-то вроде этого:
echo "There was a problem while renaming $old_file to $new_file: the server says $error_message\n";
Посмотрите API FTP здесь:
http://us.php.net/manual/en/function.ftp-rename.php
Кажется, нет никакого способа получить что-либо, кроме истинного или ложного.
Однако вы можете использовать ftp_raw для отправки необработанной команды RENAME, а затем проанализировать возвращаемое сообщение.
Вы можете использовать error_get_last (), если возвращаемое значение false.
Я делаю что-то вроде:
$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);