現在の位置: ホーム> 最新記事一覧> FTP_RAWLISTによって表示されるファイル権限が不正確なのはなぜですか?

FTP_RAWLISTによって表示されるファイル権限が不正確なのはなぜですか?

gitbox 2025-05-26

解決策の提案

  • 、異なるサーバーの返品形式に従って、異なる解析ロジックを書きます。

  • PHPビルトイン関数FTP_RAWLISTを使用して情報を取得した後、剛性のマッチングを避けるために、正規表現と組み合わせて柔軟に解析できます。

  • 条件が許可されている場合は、FTPサーバー(SFTPやFTP拡張コマンドなど)でサポートされている他のコマンドまたはプロトコルを使用して、より正確なファイル許可情報を取得します。

  • 異なるユーザー許可の下で返品結果をテストして、匿名および通常のユーザー許可リターンが一貫しているかどうかを確認します。

  • 通常、プロトコルサポートが強く、より堅牢な解析メカニズムを備えたPHPSECLIBなどのサードパーティFTPライブラリの使用を検討してください


サンプルコード:FTP_RAWLISTに基づいた単純な解析UNIXスタイルのアクセス許可

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