Как получить ошибку FTP при использовании PHP
У меня есть скрипт, который входит на удаленный сервер и пытается переименовать файлы, используя 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";
16
Author: AmbroseChapel, 2008-11-11
3 answers
Глядя на API FTP здесь:
Http://us.php.net/manual/en/function.ftp-rename.php
Похоже, что нет никакого способа получить что-либо, кроме истины или лжи.
Однако вы можете использовать ftp_raw для отправки необработанной команды ПЕРЕИМЕНОВАНИЯ, а затем проанализировать возвращенное сообщение.
6
Author: FlySwat, 2008-11-11 04:39:47
Вы можете использовать функцию error_get_last(), если возвращаемое значение равно false.
29
Author: Sascha Schmidt, 2012-01-13 08:44:11
Я делаю что-то вроде:
$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);
8
Author: Peter Hopfgartner, 2017-05-22 13:41:14