Как получить ошибку FTP при использовании PHP - PullRequest
17 голосов
/ 11 ноября 2008

У меня есть скрипт, который входит в систему на удаленном сервере и пытается переименовать файлы, используя 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";

Ответы [ 3 ]

30 голосов
/ 13 января 2012

Вы можете использовать error_get_last (), если возвращаемое значение равно false.

8 голосов
/ 16 октября 2012

Я делаю что-то вроде:

$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);
6 голосов
/ 11 ноября 2008

Глядя на FTP API здесь:

http://us.php.net/manual/en/function.ftp-rename.php

Кажется, нет никакого способа получить что-либо кроме истинного или ложного.

Однако вы можете использовать ftp_raw для отправки необработанной команды RENAME, а затем проанализировать возвращенное сообщение.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...