Start · Sprachen · PHP · Referenz · ssh2_sftp_stat

ssh2_sftp_stat

Funktion

Ruft Statusinformationen (Größe, Berechtigungen, Zeitstempel usw.) einer Datei auf einem entfernten SFTP-Server ab.

seit PHP 0.9.0 Kategorie: http

Signatur

ssh2_sftp_stat(resource $sftp, string $path): array|false

Beschreibung

ssh2_sftp_stat() verhält sich ähnlich wie die PHP-Funktion stat(), arbeitet jedoch über eine bestehende SFTP-Verbindung auf einem entfernten Server. Sie gibt ein assoziatives Array mit Metainformationen zur angegebenen Datei zurück, darunter Dateigröße, Zugriffsrechte, Eigentümer-IDs und Zeitstempel.

Die Funktion folgt symbolischen Links – möchten Sie Informationen zum Link selbst statt zum Ziel erhalten, verwenden Sie stattdessen ssh2_sftp_lstat(). Der Parameter $sftp muss eine gültige SFTP-Ressource sein, die zuvor mit ssh2_sftp() erzeugt wurde.

Das zurückgegebene Array enthält sowohl numerische als auch benannte Schlüssel (identisch zum Rückgabeformat von stat()): dev, ino, mode, nlink, uid, gid, rdev, size, atime, mtime, ctime, blksize und blocks.

Diese Funktion ist besonders nützlich, wenn Sie vor einem Dateidownload prüfen möchten, ob eine Datei auf dem Remote-Server existiert oder wie groß sie ist, ohne sie zunächst vollständig übertragen zu müssen.

Parameter

Name Typ Default Beschreibung
$sftp Pflicht resource Eine gültige SFTP-Ressource, die mit ssh2_sftp() auf Basis einer SSH2-Verbindung erstellt wurde.
$path Pflicht string Der absolute Pfad zur Datei auf dem entfernten Server, deren Statusinformationen abgerufen werden sollen.

Rückgabewert

Typ
array|false
Beschreibung
Gibt bei Erfolg ein assoziatives Array mit Dateistatistiken zurück (identisches Format wie stat()). Bei einem Fehler – z. B. wenn die Datei nicht existiert oder keine Leseberechtigung besteht – wird false zurückgegeben.

Beispiele

Dateiinformationen vom SFTP-Server abrufen

<?php
// SSH2-Verbindung aufbauen
$connection = ssh2_connect('sftp.example.com', 22);
ssh2_auth_password($connection, 'benutzer', 'geheimesPasswort');

// SFTP-Subsystem starten
$sftp = ssh2_sftp($connection);

// Statusinformationen der Remote-Datei abrufen
$stat = ssh2_sftp_stat($sftp, '/home/benutzer/dokumente/bericht.pdf');

if ($stat === false) {
    echo "Datei nicht gefunden oder kein Zugriff.\n";
} else {
    echo "Dateigröße: " . $stat['size'] . " Bytes\n";
    echo "Zuletzt geändert: " . date('d.m.Y H:i:s', $stat['mtime']) . "\n";
    echo "Berechtigungen (oktal): " . decoct($stat['mode']) . "\n";
    echo "Eigentümer-UID: " . $stat['uid'] . "\n";
}
Dateigröße: 204800 Bytes Zuletzt geändert: 15.03.2024 10:22:45 Berechtigungen (oktal): 100644 Eigentümer-UID: 1001

Prüfen ob Datei existiert und Mindestgröße hat

<?php
$connection = ssh2_connect('sftp.example.com', 22);
ssh2_auth_pubkey_file(
    $connection,
    'deploy',
    '/home/deploy/.ssh/id_rsa.pub',
    '/home/deploy/.ssh/id_rsa'
);

$sftp = ssh2_sftp($connection);
$remotePath = '/var/backups/datenbank_backup.sql.gz';

$stat = ssh2_sftp_stat($sftp, $remotePath);

if ($stat !== false && $stat['size'] > 1024) {
    echo "Backup vorhanden und größer als 1 KB. Größe: " . number_format($stat['size'] / 1024 / 1024, 2) . " MB\n";
} else {
    echo "Backup fehlt oder ist verdächtig klein!\n";
}
Backup vorhanden und größer als 1 KB. Größe: 48.73 MB

// Wichtig · Fallstricke

Erweiterung: ssh2_sftp_stat() gehört zur PECL-Erweiterung ssh2, die nicht standardmäßig in PHP enthalten ist. Sie muss separat installiert werden (pecl install ssh2).

Symbolische Links: Diese Funktion folgt symbolischen Links und gibt die Informationen des Linkziels zurück. Verwenden Sie ssh2_sftp_lstat(), wenn Sie die Informationen des Links selbst benötigen.

Fehlerbehandlung: Bei einem Fehler wird false zurückgegeben. Es empfiehlt sich, den Rückgabewert immer mit === false zu prüfen, da ein leeres Array theoretisch auch als falsy gilt. Für detaillierte Fehlermeldungen können Sie den PHP-Fehler-Handler oder libssh2-Debugging aktivieren.

Pfadangabe: Der Pfad muss als absoluter Pfad auf dem Remote-System angegeben werden. Relative Pfade können je nach Server-Konfiguration zu unerwarteten Ergebnissen führen.