Navigation
 Startseite
 Fachbücher
 Anzeigenmarkt
 Forum
 Webmaster News
 Script Newsletter
 Kontakt
 Script Installation
 Php
 Php Tutorials
 Webhoster Vergleich
 Impressum

Community-Bereich
 kostenlos Registrieren
 Anmelden
 Benutzerliste

Script Datenbank
 Script Archiv
 Script Top 20
 Screenshots
 Testberichte

Suche
 

Unsere Php Scripts
 Counter Script
 Umfrage Script
 Bilder Upload Script
 Terminverwaltung
 Simple PHP Forum
 RSS Grabber

Script Mods
 phpBB Adsense Mode

Tools und Generatoren
 .htpasswd Generator
 md5 Generator
 base64 Generator
 Markdown to HTML
 Colorpicker
 Unix timestamp Tool
 TLD Liste
 Webkatalog‑Verzeichnis

Partner
 Sprüche Treff

Artfiles.de
Bietet Serviceorientierte...
https://www.Artfiles.de
Hosterplus.de
Bekommen Sie Speicherplatz (Webspace), Domains...
https://www.Hosterplus.de
 
 
 

Dateiinformationen ermitteln in PHP

Sie befinden sich: Home > Php Tutorial > Dateiinformationen...

Dateiinformationen ermitteln mit PHP


Eintrag am:  29.09.2010
Hits / Besucher:  8012
Sprache:  Deutsch
Kategorie:  Einsteiger Tutorials
Tutorial Art:  eigenes
Eingetragen von   schubertmedia schubertmedia
 
Beschreibung

Neben dem eigentlichen Inhalt speichert das Dateisystem zu jeder Datei zusätzliche Informationen: Größe, Zeitstempel, Zugriffsrechte und mehr. PHP stellt eine ganze Reihe von Funktionen bereit, um diese Metadaten abzufragen. Die gängigsten Funktionen werden hier mit Praxisbeispielen vorgestellt.

Dateigröße ermitteln mit filesize()

Die Funktion filesize() gibt die Größe einer Datei in Bytes zurück. Für eine lesbare Ausgabe müssen die Bytes in KB, MB oder GB umgerechnet werden.

<?php

$datei = 'uploads/bericht.pdf';

if (file_exists($datei)) {
$bytes = filesize($datei);
echo $datei . ': ' . $bytes . ' Bytes';
/* Ausgabe z.B.: uploads/bericht.pdf: 245760 Bytes */
}
?>

Eine kleine Hilfsfunktion macht die Ausgabe benutzerfreundlicher:

<?php

function formatBytes(int $bytes): string
{
if ($bytes >= 1048576) {
return round($bytes / 1048576, 2) . ' MB';
}
if ($bytes >= 1024) {
return round($bytes / 1024, 2) . ' KB';
}
return $bytes . ' Bytes';
}

echo formatBytes(filesize('bericht.pdf'));
/* Ausgabe z.B.: 240 KB */
?>

Änderungsdatum abfragen mit filemtime()

Die Funktion filemtime() gibt den Unix-Zeitstempel der letzten Änderung zurück. Mit date() lässt sich dieser Zeitstempel in ein lesbares Format umwandeln.

<?php

$datei = 'config.php';
$zeit = filemtime($datei);

echo 'Letzte Änderung: ' . date('d.m.Y H:i', $zeit);
/* Ausgabe z.B.: Letzte Änderung: 15.02.2026 09:32 */
?>

Neben filemtime() gibt es zwei verwandte Funktionen: fileatime() liefert den Zeitpunkt des letzten Zugriffs und filectime() den Zeitpunkt der letzten Statusänderung (zum Beispiel Rechteänderungen).

Dateityp und Existenz prüfen

Bevor man auf eine Datei zugreift, sollte geprüft werden, ob sie überhaupt existiert und ob es sich tatsächlich um eine Datei handelt. PHP bietet dafür mehrere Prüffunktionen.

<?php

$pfad = 'daten/export.csv';

echo file_exists($pfad) ? 'Existiert' : 'Nicht gefunden';
echo is_file($pfad) ? 'Ist eine Datei' : 'Keine Datei';
echo is_dir($pfad) ? 'Ist ein Verzeichnis' : 'Kein Verzeichnis';
echo is_readable($pfad) ? 'Lesbar' : 'Nicht lesbar';
echo is_writable($pfad) ? 'Beschreibbar' : 'Nicht beschreibbar';
?>

Der Unterschied zwischen file_exists() und is_file(): file_exists() gibt true zurück, wenn der Pfad existiert, egal ob es eine Datei oder ein Verzeichnis ist. is_file() gibt nur true zurück, wenn es sich um eine reguläre Datei handelt.

Alle Informationen auf einmal mit stat()

Die Funktion stat() liefert alle verfügbaren Metadaten einer Datei in einem einzigen Array. Die Werte sind sowohl über numerische als auch über benannte Schlüssel erreichbar.

<?php

$info = stat('index.php');

if ($info !== false) {
echo 'Größe: ' . $info['size'] . ' Bytes';
echo 'Letzte Änderung: '
. date('d.m.Y H:i', $info['mtime']);
echo 'Letzter Zugriff: '
. date('d.m.Y H:i', $info['atime']);
}
?>

Die wichtigsten Schlüssel im stat()-Array sind size (Dateigröße in Bytes), mtime (letzte Änderung), atime (letzter Zugriff), ctime (letzte Statusänderung) und mode (Dateiberechtigungen). Die Einzelfunktionen wie filesize() und filemtime() sind in den meisten Fällen bequemer. stat() lohnt sich, wenn mehrere Informationen gleichzeitig benötigt werden, da so nur ein Systemaufruf erfolgt.

Praxisbeispiel: Dateiliste mit Details

Das folgende Beispiel liest alle PHP-Dateien aus einem Verzeichnis und gibt sie mit Größe und Änderungsdatum aus.

<?php

$dateien = glob('src/*.php');

foreach ($dateien as $datei) {
$groesse = filesize($datei);
$geaendert = filemtime($datei);

echo basename($datei)
. ' | ' . formatBytes($groesse)
. ' | ' . date('d.m.Y H:i', $geaendert)
. PHP_EOL;
}
/*
Ausgabe z.B.:
index.php | 3.42 KB | 10.02.2026 14:22
config.php | 1.08 KB | 05.01.2026 09:15
*/
?>

Stat-Cache beachten: clearstatcache()

PHP speichert die Ergebnisse von Dateifunktionen in einem internen Cache. Wenn sich eine Datei während der Script-Laufzeit ändert, können die gecachten Werte veraltet sein. Mit clearstatcache() wird der Cache geleert.

<?php

$datei = 'log.txt';

echo filesize($datei); // z.B. 1024

/* Datei wird anderweitig verändert ... */
file_put_contents($datei, 'Neuer Inhalt');

echo filesize($datei);
/* Zeigt möglicherweise noch 1024 (gecacht) */

clearstatcache();
echo filesize($datei);
/* Zeigt jetzt den korrekten neuen Wert */
?>

In den meisten Fällen ist der Cache kein Problem, weil er nur innerhalb eines einzelnen Script-Durchlaufs gilt. Relevant wird er, wenn eine Datei gelesen, verändert und anschließend erneut geprüft wird.

 

Tags:

 

Bücherregal mit drei Büchern: 'PHP 4 - Grundlagen und Profiwissen' von Hanser Verlag, 'Webdesign in a Nutshell' von O'Reilly Verlag, und 'Webgestaltung' von Galileo Computing.