Der Martin: Statische HTML Website verwalten

Beitrag lesen

Hallo,

»» menu.php? Enthält das Menü selbst den PHP? Wenn nein, ist die Endung .php fehl am Platz, und auch include() – readfile() tut’s dann auch.
An mancher Stelle wird von include() abgeraten und auf readfile() verwiesen. Kann jemand erklären, warum das so ist

es ist vor allem ein "Risikokandidat" weniger. Enthält eine Datei, die mit include eingebunden wird, ihrerseits weiteren PHP-Code, wird dieser Code im Kontext des aufrufenden Scripts ausgeführt. Meistens will man das ja so.
Im Gegensatz dazu reicht readfile den Dateiinhalt aber nur uninterpretiert an den Client durch.

bzw. was die Vor- und Nachteile der jeweiligen Technologie sind?

include: Einbinden von weiterem PHP-Code, ggf. auch variabel, wenn der Name der includierten Datei erst im Script gebildet wird.
readfile: Einfügen von statischen Daten ins ausgelieferte Dokument, die eingebundene Datei enthält fertig aufbereitete Text- oder HTML-Fragmente.

Falls die aufgerufene Datei selbst keinen PHP-Code enthält, dürfte readfile außerdem schneller und ressourcenschonender sein, da keine weitere Datei vom PHP-Parser analysiert werden muss.

readfile ist im übrigen "binary safe", d.h. man kann damit auch Binärdaten durchreichen. Das kann praktisch sein, wenn man z.B. PDF- oder Bilddateien ausliefern möchte, aber mit PHP noch einen zusätzlichen HTTP-Header davor setzen möchte: Einfach Header ausgeben und mit readfile die fertig auf dem Server vorliegende Datei hinterherschieben.

So long,
 Martin

--
Wer im Steinhaus sitzt, soll nicht mit Gläsern werfen.