PHPでは、 FTP_RAWLIST関数は非常に便利なツールであり、FTPサーバーの指定されたディレクトリの下にファイルとサブディレクトリをリストするためによく使用されます。この関数を通じて、FTPサーバーのファイルとディレクトリの詳細なリストを取得できます。これには、ファイル許可、ファイルサイズ、最終変更時間、その他の情報が含まれます。場合によっては、FTPパスがファイルかディレクトリかを判断する必要があります。この時点で、 FTP_RAWLIST関数の出力情報を使用して判断を下すことができます。
FTP_RAWLIST関数の関数は、FTPサーバーの指定されたディレクトリのファイルリストを取得し、リストの詳細情報を返すことです。その基本的な構文は次のとおりです。
ftp_rawlist(ftp_stream, directory);
FTP_STREAM :有効なFTP接続リソース。
ディレクトリ:リストするファイルまたはディレクトリへのパス。
この関数は配列を返し、各配列要素はFTPサーバーのファイルまたはディレクトリに関する情報の行を表します。情報の形式は、通常、ファイルまたはディレクトリ、所有者、ファイルサイズ、変更時間などの権限を含むUNIXスタイルのリストです。
ftp_rawlistによって返されるデータを介して、パスがファイルかディレクトリかを判断できます。そのような判断を下すために、それは通常、返される情報の各行の最初の文字に依存します。
最初の文字がDの場合、アイテムがディレクトリであることを意味します。
最初の文字が- - それはアイテムがファイルであることを意味します。
したがって、パスタイプを決定するために返された最初の行のコンテンツを確認する必要があります。特定の実装については、次のコード例を参照してください。
<?php
// FTP接続情報
$ftp_server = "ftp.example.com";
$ftp_user_name = "username";
$ftp_user_pass = "password";
// に接続しますFTPサーバ
$conn_id = ftp_connect($ftp_server);
// ログインFTPサーバ
if (@ftp_login($conn_id, $ftp_user_name, $ftp_user_pass)) {
echo "FTP接続に正常に!<br>";
// パッシブモードを設定します
ftp_pasv($conn_id, true);
// チェックするパス
$path = '/path/to/directory_or_file';
// ディレクトリリストを取得します
$file_list = ftp_rawlist($conn_id, dirname($path));
// ファイルまたはディレクトリのかどうかを確認してください
$is_directory = false;
$is_file = false;
foreach ($file_list as $file_info) {
// ファイル情報を分析します
$parts = preg_split("/\s+/", $file_info);
$file_name = $parts[count($parts) - 1];
// それがディレクトリかどうかを判断します
if ($file_info[0] == 'd' && $file_name == basename($path)) {
$is_directory = true;
break;
}
// ファイルかどうかを判断します
if ($file_info[0] == '-' && $file_name == basename($path)) {
$is_file = true;
break;
}
}
// 出力結果
if ($is_directory) {
echo "パス $path それはディレクトリです。<br>";
} elseif ($is_file) {
echo "パス $path ファイルです。<br>";
} else {
echo "パス $path ファイルもディレクトリもありません。<br>";
}
// 閉鎖FTP接続する
ftp_close($conn_id);
} else {
echo "无法に接続しますFTPサーバ!<br>";
}
?>
この例では、最初にFTPサーバーへの接続を確立してログインします。次に、 ftp_rawlist関数を使用して、指定されたパスの上にディレクトリのファイルリストを取得します。次に、返されたファイルリストを通過し、各行の最初の文字に基づいてアイテムがファイルまたはディレクトリであるかどうかを判断します。最後に、結果出力を判断します。
パスがシンボリックリンクの場合、 FTP_RAWLISTによって返されるコンテンツはより複雑で、追加の処理が必要になる場合があります。
FTP_RAWLISTの出力は通常、FTPサーバーの構成に依存します。異なるFTPサーバーは、異なるファイル情報形式を返す可能性があるため、特定のサーバーに従って解析ルールを調整する必要があります。
この例は、パスがファイルまたはディレクトリの直接の子であると仮定しています。ターゲットパスにサブディレクトリが含まれている場合、さらに確認するにはFTP_RAWLISTへの再帰呼び出しが必要になる場合があります。
FTP_RAWLIST関数を介して、FTPサーバーのパスがファイルかディレクトリかを簡単に判断できます。返されたファイル情報を解析し、最初の文字に基づいてD (ディレクトリ)または- (ファイル)であるかどうかを判断することにより、正確な判断を下すことができます。この方法は、ほとんどのFTPサーバーで機能し、FTPでファイルとディレクトリをより適切に管理するのに役立ちます。