PHP für Einsteiger: was PHP ist, am Beispiel erklärt
PHP ist eine Programmiersprache, die auf dem Webserver läuft und bei jedem Aufruf eine Webseite frisch zusammensetzt. Der Browser bekommt davon nur das fertige HTML zu sehen. Diese Seite erklärt PHP für Einsteiger nicht mit „Hallo Welt“, sondern an etwas, das du schon kennst: deiner eigenen Galerie. In der Kategorie „Herbstmarkt“ liegen vier Bilder vom Aufbau am Samstag, am Sonntagabend lädst du 30 Fotos vom Markttag dazu. Beim nächsten Aufruf steht über den Vorschaubildern der Satz Es sind 34 Bilder in der Kategorie „Herbstmarkt“. Gezählt hat ein PHP-Programm, und zwar erst in dem Moment, in dem die Seite aufgerufen wurde.
Ein Versuch mit Doppelklick: wo PHP läuft
Lade das Galerie-Paket herunter, entpacke es und doppelklicke auf bildergalerie.php. Es erscheint keine Galerie. Der Rechner fragt, womit er die Datei öffnen soll, oder ein Editor zeigt den Programmcode. Auf dem Webspace liefert dieselbe Datei fertige Kacheln mit Vorschaubildern. Den Unterschied macht der PHP-Interpreter auf dem Webserver: Er übernimmt jede Anfrage nach einer .php-Datei, führt den Code aus und reicht nur das Ergebnis weiter.
Warum fast jeder Webspace PHP mitbringt
PHP entstand 1995, heute laufen WordPress, Joomla und viele Shops damit. Dass es auf fast jedem Webspace bereitsteht, liegt an der Arbeitsteilung: Webserver und PHP-Dienst (oft PHP-FPM) richtet der Hoster ein und hält sie am Laufen. Dein Programm besteht nur aus Dateien, läuft bei jedem Aufruf kurz und ist beendet, sobald die Seite ausgeliefert ist. Für dich heißt das: Dateien per FTP hochladen, mehr ist nicht nötig. Eine Node.js- oder Python-Anwendung läuft dagegen als Dauerprozess, den du selbst starten und überwachen musst, und das sehen günstige Tarife meist nicht vor.
Für dich als Betreiber zählt vor allem die PHP-Version. Das Bildergalerie-Script braucht PHP 8.2 oder neuer und ist bis PHP 8.5 getestet. Die Version stellst du im Kundenmenü des Hosters ein, oft für jede Domain einzeln. Für PHP 8.2 enden die Sicherheitskorrekturen am 31. Dezember 2026. Läuft dein Webspace noch damit, stelle auf 8.4 oder 8.5 um; an der Galerie musst du dafür nichts ändern. Welche Version wirklich aktiv ist, zeigt eine Datei phpinfo.php mit dem Inhalt <?php phpinfo();. Lösche sie gleich danach wieder, denn sie verrät viel über deinen Server.
Ein Seitenaufruf der Galerie, Schritt für Schritt
Was PHP tut, sieht man am besten an einem einzigen Seitenaufruf. Nimm die Adresse bildergalerie.php?kid=3, also die Kategorie mit der Nummer 3, in unserem Beispiel den Herbstmarkt. Bevor dein Browser etwas zu sehen bekommt, arbeitet PHP auf dem Server fünf Schritte ab:
PHP liest die Angabe hinter kid= aus der Adresse und macht daraus eine ganze Zahl, hier 3. Tippt jemand kid=abc ein, wird daraus 0, und die Galerie zeigt einfach die Startseite.
PHP liest die Einstellungen aus der Datenbanktabelle einstellung, etwa die Größe der Vorschaubilder. Diese Abfrage läuft bei jedem Aufruf frisch, ohne Zwischenspeicher.
Dann braucht PHP die Kategorie und ihre Bilderliste aus den Tabellen kategorie und bilder. Zuerst schaut es aber im Ordner cache/ nach, wo die Galerie diese Antwort standardmäßig 350 Sekunden lang aufbewahrt. Nur wenn dort keine gültige Antwort liegt, fragt PHP die beiden Tabellen ab.
Für jedes Bild prüft PHP, ob ein passendes Vorschaubild existiert, etwa bilder/tn/tn3_stand.jpg. Normalerweise entsteht es schon beim Hochladen. Fehlt es oder passt es nicht mehr zur eingestellten Größe, erzeugt PHP es mit der Erweiterung GD neu, in der Grundeinstellung höchstens 200 mal 200 Pixel groß.
PHP baut aus allem HTML: eine Tabelle mit Vorschaubildern, ab Werk zwei pro Zeile. Beschreibungen laufen vorher durch htmlspecialchars(), damit ein Zeichen wie < nicht als HTML-Befehl wirkt. Das Ergebnis ersetzt den Platzhalter {AUSGABE_BILDERGALERIE} in der Vorlage tpl/bildergalerie.html, und die fertige Seite geht in UTF-8 an deinen Browser.
Das Diagramm zeigt denselben Weg mit den Daten, die PHP dabei liest oder schreibt. Die Animation spielt den ersten Aufruf durch, nachdem du die Breite der Vorschaubilder von 200 auf 240 Pixel geändert hast. Das Speichern hat cache/ geleert, deshalb findet Schritt 3 dort nichts und fragt die Tabellen kategorie und bilder ab. In Schritt 4 sind die vorhandenen Vorschaubilder zu klein, und GD rechnet sie neu.
Ein Aufruf, fünf Arbeitsschritte auf dem Server: Die Einstellungen kommen immer aus MySQL, Bilderliste und Vorschaubilder nur bei Bedarf neu, und zurück geht reines HTML.
Im Quelltext der Seite findest du danach keine PHP-Zeile, nur das Ergebnis, etwa <img class="vorschau_bild" …>. Beim nächsten Aufruf innerhalb von 350 Sekunden kommt die Bilderliste aus cache/, und Schritt 4 hat nichts mehr zu tun.
PHP für Einsteiger: so fängst du an
Zum Üben gehört PHP auf deinen eigenen Rechner, nicht auf den Webspace: Dort ist jeder Versuch sofort öffentlich, und Fehler landen im Protokoll statt auf dem Bildschirm. Ein Paket wie XAMPP installiert Apache, PHP und die Datenbank MariaDB in einem Rutsch. Dazu kommt ein Editor, der Dateien als UTF-8 ohne BOM speichert, etwa Visual Studio Code oder Notepad++.
XAMPP installieren und im XAMPP Control Panel Apache starten, für die Galerie später auch MySQL. Für das Bildergalerie-Script muss die enthaltene PHP-Version 8.2 oder neuer sein.
Im Ordner htdocs der Installation, unter Windows meist C:\xampp\htdocs, eine Datei zeit.php mit der Zeile <?php echo date('H:i'); ?> anlegen.
Im Browser http://localhost/zeit.php aufrufen. Du siehst die Uhrzeit, etwa 14:35, eine Minute später 14:36. Im Quelltext steht nur die Uhrzeit, die Anweisung selbst hat den Server nie verlassen.
Die Fehleranzeige prüfen: Schreib testweise ech statt echo. Statt der Uhrzeit muss jetzt ein „Parse error“ mit Zeilennummer erscheinen. Bleibt die Seite weiß, setze in der php.ini (Knopf „Config“ neben Apache) display_errors = On und starte Apache neu.
Auf dem Webspace bleibt die Fehleranzeige dagegen ausgeschaltet. Das empfiehlt auch die Sicherheitsanleitung der Galerie, denn eine Meldung kann Serverpfade und Datenbankdetails verraten. Wie du Fehler dort trotzdem findest, steht im Abschnitt über typische Fehler.
Die erste Entscheidung im Code
HTML gibt aus, was dasteht. PHP kann vorher entscheiden, was dastehen soll. Ein Beispiel ist der Satz über die Anzahl der Bilder: Bei einem Foto soll „ein Bild“ dastehen, bei vier „4 Bilder“. In einfachem PHP sieht das so aus:
<?php
$anzahl = 4;
if ($anzahl === 1) { echo 'Es ist ein Bild in der Kategorie.';
} else { echo 'Es sind ' . $anzahl . ' Bilder in der Kategorie.';
}
?>
Vier Regeln lassen sich daran ablesen:
Variablen: Sie beginnen mit einem Dollarzeichen. $anzahl ist ein Behälter für die Zahl.
Vergleich: Drei Gleichheitszeichen prüfen Wert und Art, also „genau die Zahl 1“.
Texte verbinden: Der Punkt hängt Texte aneinander. Aus 'Es sind ' . 4 . ' Bilder' wird ein Satz.
Semikolon: Jede Anweisung endet damit. Fehlt eines, meldet PHP einen „Parse error“, oft mit der Zeilennummer der folgenden Zeile.
Im Script steht eine solche Entscheidung oft in Kurzform: erst die Bedingung, dann ein Fragezeichen, der Wert für „ja“, ein Doppelpunkt und der Wert für „nein“. So arbeitet auch Schritt 1 des Seitenaufrufs:
In Worten: Steht kid in der Adresse, mach daraus mit (int) eine ganze Zahl und nimm mit max() mindestens 0. Fehlt die Angabe, nimm 0. Die Kacheln der Startseite unterscheiden auf dieselbe Weise sogar drei Fälle: „4 Bilder“, „1 Bild“ oder „Noch keine Bilder“.
Die Schleife: eine Zelle für jedes Bild
Eine Schleife wiederholt dieselben Anweisungen für jeden Eintrag einer Liste. Ohne sie bräuchten die 34 Herbstmarkt-Fotos 34 gleiche Zeilen Code. In PHP heißt die häufigste Schleife foreach:
Die eckigen Klammern bilden ein Array, eine Liste mit drei Dateinamen. foreach legt jeden Eintrag nacheinander in $datei ab und führt den Block in den geschweiften Klammern aus. Stünden 34 Namen in der Liste, entstünden 34 Zellen, und der Code bliebe gleich.
Im Bildergalerie-Script steckt diese Schleife in der Funktion bildergalerie_kacheltabelle() in inc/functions.php. Sie teilt die Kacheln zuerst in Reihen, so viele pro Reihe, wie die Einstellung „Vorschaubilder pro Zeile“ vorgibt, standardmäßig 2. Für jede Reihe schreibt sie eine Tabellenzeile <tr>, beim Herbstmarkt also 17. Wer PHP an einem laufenden Beispiel lernen will, kann das Bildergalerie-Script kostenlos herunterladen und den Seitenaufruf von oben in den Dateien nachverfolgen.
Woran du typische Fehler erkennst
Zeigt eine PHP-Datei nur eine weiße Seite, steht die Ursache im Fehlerprotokoll, das du im Kundenmenü des Hosters findest. Vier Einträge kommen bei Galerien besonders oft vor:
Eintrag im Protokoll
Was dahintersteckt
Was du tust
Parse error: syntax error
Tippfehler im Code, oft ein fehlendes Semikolon oder Anführungszeichen
die genannte Zeile und die davor prüfen, sonst die gesicherte Datei zurückspielen
Cannot modify header information - headers already sent
ein unsichtbares Zeichen vor <?php, meist eine BOM, oft nach dem Bearbeiten von inc/config.php wegen eines neuen Datenbank-Passworts
die Datei als UTF-8 ohne BOM speichern und erneut hochladen
Allowed memory size of … bytes exhausted
ein großes Foto braucht beim Verkleinern viel Arbeitsspeicher
memory_limit beim Hoster erhöhen, etwa auf 256M
Call to undefined function mb_check_encoding()
die Erweiterung mbstring ist nicht aktiv
den Hoster bitten, sie einzuschalten
Den Speicherfehler erklärt eine Rechnung. GD hält ein Bild beim Bearbeiten unkomprimiert im Arbeitsspeicher, grob vier Byte pro Pixel. Ein Handyfoto mit 12 Megapixeln belegt so rund 48 MB, obwohl die JPEG-Datei nur etwa 4 MB groß ist. Das Script versucht in diesem Fall, das Limit selbst anzuheben. Verbietet der Hoster das und steht es auf 64M, wird es eng. Verkleinerst du die Fotos vor dem Hochladen auf 2000 mal 1500 Pixel, sinkt der Bedarf auf ein Viertel, rund 12 MB.
Häufige Fragen zum Einstieg in PHP
Die Antworten beziehen sich wieder auf die Galerie aus den Beispielen oben.
Wie schwer ist PHP zu lernen?
Der Anfang ist leicht, weil du jedes Ergebnis sofort im Browser siehst. Anspruchsvoll wird es bei der Sicherheit. An der Galerie lassen sich die drei wichtigsten Regeln ablesen: Eingaben aus der Adresse in eine Zahl umwandeln wie bei kid, Texte vor der Ausgabe mit htmlspecialchars() entschärfen und Datenbankabfragen mit Platzhaltern (?) stellen, statt Eingaben direkt in den SQL-Text zu kleben.
Muss ich PHP können, um die Galerie zu betreiben?
Nein. Kategorien, Bilder und Werte wie die Größe der Vorschaubilder pflegst du in der Verwaltung im Browser. Kopfbereich, Menü und Fußzeile deiner Website trägst du in die Vorlage tpl/bildergalerie.html ein, und die ist reines HTML. PHP füllt darin nur zwei Platzhalter: {AUSGABE_KATEGORIE} im Seitentitel und {AUSGABE_BILDERGALERIE} für die Kacheln. Sichere die Vorlage vor jedem Update, denn die neue Version überschreibt die Dateien in tpl/.
Lohnt es sich heute noch, PHP zu lernen?
Ja, wenn du Websites betreibst oder bauen willst. PHP läuft auf praktisch jedem Webspace und erscheint jedes Jahr im November in einer neuen Version, zuletzt 8.5. Für Handy-Apps oder Datenauswertung sind andere Sprachen besser geeignet.
Warum kann der Besucher meinen PHP-Code nicht sehen?
Weil der Webserver jede .php-Datei erst dem Interpreter übergibt und nur dessen Ausgabe verschickt. Deshalb darf in inc/config.php das Datenbank-Passwort stehen. Für den Fall, dass PHP auf dem Server falsch eingerichtet ist und Dateien als Text ausliefert, sperrt die Galerie den Ordner inc/ zusätzlich mit einer .htaccess.
Was lerne ich nach den PHP-Grundlagen als Nächstes?
SQL, die Abfragesprache der Datenbank. Die Galerie speichert ihre Daten in den Tabellen einstellung, kategorie und bilder. Kannst du eine Abfrage wie SELECT dateiname FROM bilder WHERE kategorie_id = ? lesen, verstehst du Schritt 3 oben vollständig.
Verwandte Themen
Nach PHP folgen die Bausteine drumherum: HTML, die Datenbank und JavaScript.