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