Sammelt Informationen über eine Datei

# stat

(PHP 4, PHP 5, PHP 7, PHP 8)

stat — Sammelt Informationen über eine Datei

### Beschreibung

function stat(string `$filename`): array|false

Sammelt Statistiken über die per `filename` angegebene Datei. Falls `filename` ein symbolischer Link ist, beziehen sich die Statistiken auf die Datei selbst, nicht auf den symbolischen Link. Unter Windows NTS-Builds vor PHP 7.4.0 bezogen sich in diesem Fall die `size`-, `atime`-, `mtime`- und `ctime`-Statistiken auf den symbolischen Link.

lstat() ist identisch zu stat(), mit dem Unterschied, dass es sich auf den Status des symbolischen Links bezieht.

### Parameter-Liste

`filename`

  Pfad zur Datei.

### Rückgabewerte

stat()- und fstat()-Ergebnisformat
Numerisch | Assoziativ | Beschreibung
--- | --- | ---
0 | dev | Gerätenummer ***
1 | ino | Inode-Nummer ****
2 | mode | Inode-Schutzmodus *****
3 | nlink | Anzahl der Links
4 | uid | userid des Besitzers *
5 | gid | groupid des Besitzers *
6 | rdev | Gerätetyp, falls Inode-Gerät
7 | size | Größe in Bytes
8 | atime | Zeitpunkt des letzten Zugriffs (Unix-Timestamp)
9 | mtime | Zeitpunkt der letzten Änderung (Unix-Timestamp)
10 | ctime | Zeitpunkt der letzten Inode-Änderung (Unix-Timestamp)
11 | blksize | Blockgröße des Dateisystem-I/O **
12 | blocks | Anzahl der zugewiesenen 512-Byte-Blöcke **

* Unter Windows wird dies immer `0` sein.

** Nur gültig unter Systemen, die den st_blksize-Typ unterstützen - andere Systeme (z. B. Windows) geben `-1` zurück.

*** Unter Windows, von PHP 7.4.0 an, ist dies die Seriennummer des Laufwerks, das die Datei enhält, welches eine 64-bit Ganzzahl ohne Vorzeichen ist, so dass auf 32-bit-Systemen ein Überlauf erfolgen kann. Zuvor war es die numerische Darstellung des Laufwerksbuchstabens (z. B. `2` für `C:`) für stat(), und `0` für lstat().

**** Unter Windows, von PHP 7.4.0 an, ist dies die mit der Datei assozierte Kennung, welche eine 64-bit Ganzzahl ohne Vorzeichen ist, so dass ein Überlauf erfolgen kann. Zuvor war es immer `0`.

***** Unter Windows wird das Schreibberechtigungsbit entsprechend dem schreibgeschützten Dateiattribut gesetzt, und derselbe Wert wird für alle Benutzer, Gruppen und Besitzer gemeldet. Die ACL wird im Gegensatz zu is_writable() nicht berücksichtigt.

Der Wert von `mode` enthält Informationen, die von mehreren Funktionen gelesen werden. Wenn als Oktalzahl dargestellt und von rechts betrachtet, werden die ersten drei Ziffern von chmod() zurückgegeben. Die nächste Ziffer wird von PHP ignoriert. Die nächsten beiden Ziffern geben den Dateityp an:

`mode` Dateitypen
`mode` als Oktalzahl | Bedeutung
--- | ---
`0140000` | socket
`0120000` | Verknüpfung
`0100000` | reguläre Datei
`0060000` | Block-Gerät
`0040000` | Verzeichnis
`0020000` | zeichenorientiertes Gerät
`0010000` | FIFO

So könnte beispielsweise eine reguläre Datei `0100644`, und ein Verzeichnis `0040755` sein.

Im Fehlerfall gibt stat() `false` zurück.

> Hinweis: Weil PHPs Integer Typ vorzeichenbehaftet ist und viele Platformen 32bit Integer verwenden, können einige Dateisystem-Funktionen für Dateien größer als 2GB unerwartete Ergebnisse liefern.

### Fehler/Exceptions

Im Fehlerfall wird eine `E_WARNING` geworfen.

### Changelog

Version | Beschreibung
--- | ---
7.4.0 | Unter Windows ist die Gerätenummer nun die Seriennummer des Laufwerks, das die Datei enthält, und die Inode-Nummer ist die mit der Datei assozierte Kennung.
7.4.0 | Die `size`-, `atime`-, `mtime`- und `ctime`-Statistiken symbolischer Links sind nun immer die des Ziels. Dies war zuvor nicht der Fall für NTS-Builds unter Windows.

### Beispiele

Beispiel #1 stat()-Beispiel

    <?php
    /* Hole Datei-Statistik */
    $stat = stat('C:\php\php.exe');

    /*
     * Gebe den Zugriffszeitpunkt der Datei aus; dies entspricht dem
     * Aufruf von fileatime()
     */
    echo 'Zugriffszeitpunkt: ' . $stat['atime'];

    /*
     * Gebe den Änderungszeitpunkt der Datei aus; dies entspricht dem
     * Aufruf von filemtime()
     */
    echo 'Änderungszeitpunkt: ' . $stat['mtime'];

    /* Gebe die Gerätenummer aus */
    echo 'Gerätenummer: ' . $stat['dev'];
    ?>

Beispiel #2 Nutzung von stat()-Informationen zusammen mit touch()

    <?php
    /* Hole Datei-Statistik */
    $stat = stat('C:\php\php.exe');

    /* Hat das Holen der Statistik-Informationen geklappt? */
    if (!$stat) {
        echo 'stat()-Aufruf schlug fehl ...';
    } else {
        /*
         * Wir wollen den Zugriffszeitpunkt auf eine Woche nach dem aktuellen
         * Zugriffszeitpunkt setzen.
         */
        $atime = $stat['atime'] + 604800;

        /* Ändere die Datei */
        if (!touch('eine_datei.txt', time(), $atime)) {
            echo 'Ändern der Datei schlug fehl ...';
        } else {
            echo 'touch()-Befehl war erfolgreich ...';
        }
    }
    ?>

### Anmerkungen

> Hinweis:

> Beachten Sie, dass die zeitliche Auflösung bei verschiedenen Dateisystemen unterschiedlich sein kann.

> Hinweis: Die Ergebnisse dieser Funktion werden zwischengespeichert. Weitere Details sind bei clearstatcache() zu finden.

Tipp

Seit PHP 5.0.0 kann diese Funktion mit einigen URL-Wrappern benutzt werden. Schauen Sie in der Liste unter Unterstützte Protokolle und Wrapper nach, welcher Wrapper die Funktionalität von stat() unterstützt.

### Siehe auch

- lstat() - Sammelt Informationen über eine Datei oder einen symbolischen Link
- fstat() - Sammelt Informationen über eine Datei mittels eines offenen Dateizeigers
- filemtime() - Liefert die Zeit der letzten Dateiänderung
- filegroup() - Liefert die Gruppenzugehörigkeit einer Datei
- SplFileInfo

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open