Aktueller Standort: Startseite> Neueste Artikel> Warum werden die von ftp_rawlist angezeigten Dateiberechtigungen ungenau angezeigt?

Warum werden die von ftp_rawlist angezeigten Dateiberechtigungen ungenau angezeigt?

gitbox 2025-05-26

Lösungsvorschläge

  • Schreiben Sie unterschiedliche Parsing -Logik gemäß dem Rückgabeformat verschiedener Server.

  • Nachdem Sie die PHP-integrierte Funktion FTP_RAWLIST verwendet haben, um Informationen zu erhalten, können Sie sie in Kombination mit regulären Ausdrücken flexibel analysieren, um starre Matching zu vermeiden.

  • Wenn die Bedingungen dies zulassen, verwenden Sie andere Befehle oder Protokolle, die vom FTP -Server (z. B. SFTP- oder FTP -Erweiterungsbefehle) unterstützt werden , um genauere Informationen zur Dateiberechtigung zu erhalten.

  • Testen Sie die Rückgabergebnisse unter verschiedenen Benutzerberechtigungen, um zu bestätigen, ob die Rückgabe der anonymen und gewöhnlichen Benutzerberechtigungen konsistent sind.

  • Erwägen Sie, FTP-Bibliotheken von Drittanbietern wie PHPSeclib zu verwenden , die normalerweise eine stärkere Protokollunterstützung und robustere Parsingmechanismen aufweisen.


Beispielcode: Einfache Parsing Unix -Stilberechtigungen basierend auf FTP_RAWLIST

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

// verbindenFTP
$conn_id = ftp_connect($ftp_server);
if (!$conn_id) {
    die("无法verbinden FTP Server");
}

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

// Holen Sie sich die Verzeichnisliste
$rawlist = ftp_rawlist($conn_id, "/path/to/directory");
if ($rawlist === false) {
    die("Holen Sie sich die Verzeichnisliste失败");
}

// Berechtigungsinformationen analysieren
foreach ($rawlist as $line) {
    // Unix Die Style -Berechtigungszeichenfolge ist normalerweise das erste Feld
    // Zum Beispiel:-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 "dokumentieren: $filename ,Berechtigungen: $permissions\n";
    }
}

ftp_close($conn_id);
?>