24

PHPを使用して、リモートサーバーにログオンし、ファイルの名前を変更しようとするスクリプトがあります。

コードは現在、php.netWebサイトの次の例のようになっています。

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";
4

4 に答える 4

39

戻り値が false の場合は、error_get_last() を使用できます。

于 2012-01-13T08:44:11.007 に答える
12

私は次のようなことをしています:

$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);

編集:

$php_errormsg は PHP 7 で非推奨になったことに注意してください。

代わりに error_get_last() を使用してください。

@Sascha Schmidtによる回答を参照してください

于 2012-10-16T08:29:10.767 に答える
11

ここでFTPAPIを見てください:

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

真か偽か以外に何かを得る方法はないようです。

ただし、ftp_rawを使用して生のRENAMEコマンドを送信し、返されたメッセージを解析することはできます。

于 2008-11-11T04:39:47.787 に答える