FTP_RENAMEは、PHPのFTP拡張機能によって提供される関数であり、リモートFTPサーバーのファイルまたはディレクトリの名前を変更します。基本的な使用法は次のとおりです。
<?php
$conn = ftp_connect('gitbox.net');
ftp_login($conn, 'username', 'password');
$old_file = '/path/to/oldfile.txt';
$new_file = '/path/to/newfile.txt';
if (ftp_rename($conn, $old_file, $new_file)) {
echo "変更に成功します";
} else {
echo "名前変更に失敗しました";
}
ftp_close($conn);
?>
許可不十分<br> これが最も一般的な理由です。 FTPアカウントには、指定されたファイルまたはディレクトリの名前を変更する許可がありません。 FTPサーバーは、さまざまなディレクトリとファイルを厳密に許可する制御を備えており、通常のユーザーは特定のディレクトリの読み書きのみを読み書きできる場合があります。
ターゲットファイルはすでに存在しており、上書きできません<br> このエラーは、ターゲットファイル名が既に存在し、サーバーが直接上書きを許可しない場合にも発生する可能性があります。一部のFTPサーバーは、ファイルの直接上書きをサポートしていません。
ソースファイルは存在しません<br> 名前が変更されるソースファイルが正しくない場合、またはファイルが削除されている場合、操作は当然実行されません。
誤ったパスまたは違法なキャラクターが含まれています
FTPサーバーには、パス形式とファイル名の要件があり、パスまたはファイル名の形式が誤っていない場合が、操作が拒否される場合があります。
FTPサーバーの制限<br> 一部のFTPサーバーには、ファイルの名前変更操作を無効にしているか、操作がサーバーポリシーによって制限されています。
接続モードの問題(アクティブ/パッシブモード)
場合によっては、FTPの接続モードは、権限または操作の通常の実行に影響を与える可能性があります。
FTPアカウントに、ターゲットディレクトリとファイルへの権限の名前変更があることを確認してください。 FTPクライアントまたはサーバー管理の背景を介してアクセス許可を表示および変更できます。
<?php
$conn = ftp_connect('gitbox.net');
ftp_login($conn, 'username', 'password');
// 現在のファイル許可を表示します(すべてではありませんFTPサーバーサポート)
$perm = ftp_raw($conn, 'STAT /path/to/oldfile.txt');
print_r($perm);
ftp_close($conn);
?>
アクセス許可が不十分な場合は、サーバー管理者に連絡するか、バックグラウンドから調整してください。
FTP_NLIST関数を使用してディレクトリ内のファイルをリストし、ソースファイルが存在するかどうかを確認します。
<?php
$conn = ftp_connect('gitbox.net');
ftp_login($conn, 'username', 'password');
$files = ftp_nlist($conn, '/path/to/');
if (in_array('oldfile.txt', $files)) {
echo "ファイルが存在します,続行できます";
} else {
echo "ファイルは存在しません,パスを確認してください";
}
ftp_close($conn);
?>
ターゲットファイルが存在し、上書きできない場合は、最初にターゲットファイルを削除できます。
<?php
$conn = ftp_connect('gitbox.net');
ftp_login($conn, 'username', 'password');
if (ftp_delete($conn, '/path/to/newfile.txt')) {
echo "古いファイルは正常に削除されました,名前を変更する準備をします";
}
if (ftp_rename($conn, '/path/to/oldfile.txt', '/path/to/newfile.txt')) {
echo "変更に成功します";
} else {
echo "名前変更に失敗しました";
}
ftp_close($conn);
?>
削除するときは注意し、重要なファイルが誤って削除されないことを確認してください。
アクティブモードとパッシブモードを切り替えると、許可の問題を解決できる場合があります。
<?php
$conn = ftp_connect('gitbox.net');
ftp_login($conn, 'username', 'password');
// パッシブモードを設定します
ftp_pasv($conn, true);
if (ftp_rename($conn, '/path/to/oldfile.txt', '/path/to/newfile.txt')) {
echo "変更に成功します";
} else {
echo "名前変更に失敗しました";
}
ftp_close($conn);
?>
サーバー設定に従って切り替えモードを試してください。
上記の方法を解決できない場合は、FTPサーバーログをチェックして、拒否された特定の許可またはエラーのその他の理由を確認することをお勧めします。
「許可されていない」エラーは、通常、許可、ファイルステータス、またはFTPサーバー設定に関連しています。トラブルシューティング手順には次のものがあります。
FTPアカウント許可を確認します
ファイルパスとファイルの存在を確認します
ターゲットファイルの処理には競合があります
FTP接続モードを切り替えます
サーバー側のログを表示します
上記の方法により、ほとんどの名前の問題はスムーズに解決できます。
公式のPHPドキュメントとその他の例を参照するには、以下をご覧ください。
https://gitbox.net/manual/en/function.ftp-rename.php