Position actuelle: Accueil> Derniers articles> Pourquoi les autorisations de fichiers affichées par FTP_RAWLIST sont-elles inexactes?

Pourquoi les autorisations de fichiers affichées par FTP_RAWLIST sont-elles inexactes?

gitbox 2025-05-26

Suggestions de solution

  • , écrivez différentes logiques d'analyse en fonction du format de retour de différents serveurs.

  • Après avoir utilisé la fonction intégrée PHP FTP_RAWLIST pour obtenir des informations, vous pouvez l'analyser de manière flexible en combinaison avec des expressions régulières pour éviter la correspondance rigide.

  • Si les conditions le permettent, utilisez d'autres commandes ou protocoles pris en charge par le serveur FTP (tels que les commandes d'extension SFTP ou FTP) pour obtenir des informations d'autorisation de fichier plus précises.

  • Testez les résultats de retour sous différentes autorisations utilisateur pour confirmer si les rendements anonymes et ordinaires de l'autorisation de l'utilisateur sont cohérents.

  • Envisagez d'utiliser des bibliothèques FTP tierces telles que PhPSeclib, qui ont généralement un support de protocole plus fort et des mécanismes d'analyse plus robustes.


Exemple de code: Assurer les autorisations de style Unix simple basées sur FTP_RAWLIST

 <?php
$ftp_server = "gitbox.net";
$ftp_user = "username";
$ftp_pass = "password";

// connecterFTP
$conn_id = ftp_connect($ftp_server);
if (!$conn_id) {
    die("无法connecter FTP serveur");
}

// Se connecter
if (!ftp_login($conn_id, $ftp_user, $ftp_pass)) {
    die("FTP Se connecter失败");
}

// Obtenez la liste des répertoires
$rawlist = ftp_rawlist($conn_id, "/path/to/directory");
if ($rawlist === false) {
    die("Obtenez la liste des répertoires失败");
}

// Analyser les informations d&#39;autorisation
foreach ($rawlist as $line) {
    // Unix La chaîne d&#39;autorisation de style est généralement le premier champ
    // Par exemple:-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 "document: $filename ,Autorisation: $permissions\n";
    }
}

ftp_close($conn_id);
?>