Signatur
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
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";
}
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";
}
// 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.