、異なるサーバーの返品形式に従って、異なる解析ロジックを書きます。
PHPビルトイン関数FTP_RAWLISTを使用して情報を取得した後、剛性のマッチングを避けるために、正規表現と組み合わせて柔軟に解析できます。
条件が許可されている場合は、FTPサーバー(SFTPやFTP拡張コマンドなど)でサポートされている他のコマンドまたはプロトコルを使用して、より正確なファイル許可情報を取得します。
異なるユーザー許可の下で返品結果をテストして、匿名および通常のユーザー許可リターンが一貫しているかどうかを確認します。
通常、プロトコルサポートが強く、より堅牢な解析メカニズムを備えたPHPSECLIBなどのサードパーティFTPライブラリの使用を検討してください。
<?php
$ftp_server = "gitbox.net";
$ftp_user = "username";
$ftp_pass = "password";
// 接続するFTP
$conn_id = ftp_connect($ftp_server);
if (!$conn_id) {
die("无法接続する FTP サーバ");
}
// ログイン
if (!ftp_login($conn_id, $ftp_user, $ftp_pass)) {
die("FTP ログイン失败");
}
// ディレクトリリストを取得します
$rawlist = ftp_rawlist($conn_id, "/path/to/directory");
if ($rawlist === false) {
die("ディレクトリリストを取得します失败");
}
// 許可情報を分析します
foreach ($rawlist as $line) {
// Unix スタイルの許可文字列は通常、最初のフィールドです
// 例えば:-rw-r--r-- 1 user group 1234 May 20 12:00 example.txt
$parts = preg_split('/\s+/', $line, 9);
if (count($parts) === 9) {
$permissions = $parts[0];
$filename = $parts[8];
echo "書類: $filename ,権限: $permissions\n";
}
}
ftp_close($conn_id);
?>