PHP (PHP: Hypertext Preprocessor) ist eine Skriptsprache zum Erstellen dynamischer Webseiten auf Webservern. PHP wurde 1994 von Rasmus Lerdorf, einem leitenden Softwareentwickler bei IBM, entworfen. Lerdorf nutzte Perl als Inspiration.
Anfangs standen die Buchstaben PHP für Personal Home Page, aber seit PHP 3.0 hat sich die Bedeutung zu einem rekursiven Akronym entwickelt: PHP: Hypertext Preprocessor. Dieser Name gibt an, wofür die Sprache normalerweise verwendet wird: Informationen in Hypertext zu verarbeiten.
Eigenschaften
PHP ist eine Skriptsprache und ähnelt Perl, Python und Ruby. PHP ist C in der Syntax am ähnlichsten, aber wie bei vielen anderen Skriptsprachen muss Variablen ein Dollarzeichen $ vorangestellt werden. Diese stammt aus der Skriptsprache Perl, von der PHP teilweise abgeleitet ist. Anders als in C ist es in PHP möglich, neben der prozeduralen Programmierung auch objektorientiert zu programmieren, genau wie beispielsweise in Java, C++ und C♯. In den ersten Versionen von PHP war die objektorientierte Programmierung noch sehr eingeschränkt. Erst seit Version 5 stehen dafür die wesentlichsten Funktionen zur Verfügung.
PHP ist eine sogenannte serverseitige Skriptsprache, die hauptsächlich dazu dient, dynamische Webseiten auf dem Webserver zu erstellen. Der verwendete PHP-Code ist für den Benutzer unsichtbar. Nur das Ergebnis ist sichtbar und sieht aus wie eine normale HTML-Seite. Da PHP als Open-Source-Software veröffentlicht wurde, ist es in relativ kurzer Zeit sehr populär geworden. Es gibt breite Unterstützung von der Community im Internet. Neben serverseitigem Scripting kann PHP auch über die Kommandozeile oder in grafischen Anwendungen genutzt werden, beispielsweise mit PHP-GTK (PHP mit GTK+).
PHP wird oft in Kombination mit einer relationalen Datenbank verwendet. Die am häufigsten verwendeten relationalen Datenbanken für PHP sind MySQL und PostgreSQL, aber es ist auch möglich, andere Datenbanken wie MongoDB und mSQL zu verwenden. Es gibt viele verschiedene Anwendungen für PHP, wie z. B. die Verarbeitung von Daten, den Zugriff auf Datenbanken, die Bearbeitung von Dateien und die Generierung von Bildern und XML. Einiges davon ist in die Sprache eingebettet, einiges davon ist über Erweiterungen und Module (einschließlich über PEAR) verfügbar.
Geschichte
PHP wurde 1994 von Rasmus Lerdorf entwickelt. Die erste öffentliche Version hieß Personal Home Page/Forms Interpreter und erschien 1995. Version 2 folgte noch im selben Jahr.1997 schrieben Zeev Suraski und Andi Gutmans, zwei israelische Entwickler bei Technion IIT, den PHP-Parser neu. Das Entwicklungsteam veröffentlichte PHP/FI 2 offiziell im November 1997 nach monatelangem Beta-Testen. Danach begannen die öffentlichen Tests von PHP 3 und PHP 3 wurde im Juni 1998 offiziell freigegeben. Der Name wurde auch in PHP geändert: Hypertext Preprocessor.
Suraski und Gutmans begannen dann damit, den PHP-Parser neu zu schreiben, was zur Zend Engine führte. 1999 wurde zu diesem Zweck Zend Technologies in Ramat Gan, Israel, gegründet. Der Name Zend ist eine Kombination aus ihren beiden Vornamen Zeev und Andi.
Am 22. Mai 2000 wurde PHP 4 veröffentlicht, das von Zend Engine 1 angetrieben wurde. Am 13. Juli 2004 wurde es von PHP 5 abgelöst, das von der neuen Zend Engine 2 angetrieben wurde. Obwohl PHP 5 seit 2004 verfügbar war , verwenden viele Webserver PHP 5 erst seit Anfang 2007, weil frühere Versionen nicht stabil genug waren. Die neueste stabile Version ist 5.6.29, die am 8. Dezember 2016 veröffentlicht wurde. Dies ist auch die letzte Version von PHP 5 mit aktiver Unterstützung. Von 2017 bis 2018 wurden nur Sicherheitsanpassungen für PHP 5.6 veröffentlicht.
Die Hauptmerkmale von PHP 5 waren verbesserte objektorientierte Programmierung, höhere Geschwindigkeit, die Fähigkeit, SQLite anzusprechen, und die überarbeitete Extensible Markup Language (XML)-Bibliothek. Bis einschließlich der neusten Version 5.6 sind viele weitere Funktionalitäten hinzugekommen.
Eine Version 6 ist nie erschienen. Es gab einen Anstoß und ein wichtiger Teil sollte die Unterstützung von Unicode sein. An der Umsetzung gab es viel Kritik und es mangelte auch an Entwicklern, die die nötigen großen Anpassungen vornehmen könnten. Letztendlich geriet die Entwicklung im März 2010 ins Stocken. Mehrere Komponenten, die in Version 6 enthalten wären, wurden auf die Versionen 5.3 portiert. Andere Änderungen wie Traits und Closure Rebinding sind in PHP 5.4 gelandet. Um Verwirrung über die ursprünglich vorgesehene Version 6 (z. B. bereits geschriebene Bücher) und den eigentlichen Nachfolger des PHP-5-Zweigs zu vermeiden, wurde entschieden, die Nummerierung bei 7 fortzusetzen.
Am 3. Dezember 2015 wurde PHP 7.0.0, powered by Zend Engine 3, mit stark verbesserter Geschwindigkeit und neuen Funktionen veröffentlicht, einschließlich Typhinweisen auf skalare Typen und Rückgabetypen. PHP 7.1.0 wurde am 1. Dezember 2016 veröffentlicht. Neu in dieser Version sind: nullable-types; void Rückgabetyp für Funktionen und iterierbarer Pseudotyp.
PHP 8 wurde am 26. November 2020 mit stark verbesserten Funktionalitäten veröffentlicht. Diese Version wird von Zend Engine 4 unterstützt.
Verwendungszweck
PHP wird häufig verwendet, um Webseiten auf Webservern dynamisch zu erstellen. Der Code der Seite wird auf dem Webserver ausgeführt und das Ergebnis an den Computer des Besuchers gesendet und im Webbrowser angezeigt. Dies steht im Gegensatz zum clientseitigen Skripting (wie JavaScript), bei dem der Webbrowser den Code zuerst vom Webserver herunterlädt und ihn dann selbst (auf dem Computer des Besuchers) ausführt. Wenn ein Browser ein PHP-Dokument aufruft, führt der Server zunächst den im Dokument enthaltenen PHP-Code aus. Dies geschieht durch den PHP-Interpreter (die PHP-Engine). Das Ergebnis (normalerweise HTML) wird vom Webserver an den Browser gesendet. PHP kann jedoch auch andere Dokumenttypen wie Bilder oder XML generieren.
PHP-Dokumente haben auf dem Server meist die Endung .php, vereinzelt werden aber noch ältere Endungen verwendet. Dieser Dateiname auf dem Server wird normalerweise vor dem Besucher verborgen, indem die URL umgeschrieben wird.
PHP wird häufig in Verbindung mit dem Linux-Betriebssystem, dem Apache-Webserver und der MySQL-Datenbanksoftware verwendet. Eine solche Kombination wird mit LAMP abgekürzt. Es kommt manchmal vor, dass Leute Windows anstelle von Linux verwenden. WAMP ist die Abkürzung für Systeme, die Windows verwenden, und die Abkürzung MAMP wird manchmal für den Apple Macintosh verwendet. Es gibt auch fertige Programme, die eine komplette WAMP-Umgebung installieren. Beispiele sind WAMP und XAMPP.
Popularität
PHP wird für eine Vielzahl von Webanwendungen verwendet, z. B. Schwarze Bretter/Foren, Content-Management-Systeme, Blogs und Wikis. Eine Analyse von W3Techs im Mai 2022 zeigt, dass PHP auf 77,4 % aller Webserver verwendet wird, auf denen die Programmiersprache bekannt ist.
Syntax
In PHP-Dokumenten kann Text dem Benutzer auf verschiedene Weise präsentiert werden. In serverseitigen Dokumenten kann PHP zwischen den HTML-Tags frei aufgerufen werden. Im folgenden Beispiel wird der gesamte Text außerhalb der PHP-Tags automatisch an den Browser gesendet. Alles innerhalb der PHP-Tags wird vom PHP-Interpreter ausgeführt. Auf diese Weise können dynamische HTML-Dokumente erstellt werden.
<!DOCTYPE html>
<html>
<meta charset=utf-8>
<title>PHP Test</title>
<?php
// Dies ist eine kommentierte Zeile
/* Dies sind zwei Zeilen
mit Kommentar */
echo 'Hallo Welt';
?>
</html>
In PHP kunnen strings zowel met enkele als met dubbele aanhalingstekens geschreven worden. Variabelen beginnen met een dollarteken. Als strings met dubbele aanhalingstekens geschreven worden dan worden de variabelen die gebruikt worden in de string vervangen door hun waarde (dit wordt variable interpolation genoemd).
Hieronder een voorbeeld dat variable interpolation gebruikt om de URL van dit artikel aan de gebruiker te melden:
<?php
$url = "https://foaa.de";
echo "Sie befinden sich derzeit auf $url. Willkommen!";
// Oder
echo "Sie befinden sich gerade auf ".$url.". Willkommen!";
?>
Um mit einer Datenbank zu kommunizieren, muss sich PHP zunächst mit einem DBMS (zB MySQL) verbinden. Dazu kann die PHP mysqli-Bibliothek verwendet werden:
<?php
$db_hostname = "localhost"; // Der Speicherort, an dem der MySQL-Dienst ausgeführt wird
$db_user = "Benutzername"; // Der Benutzername für die Verbindung zur Datenbank
$db_password = "Passwort"; // Das Passwort zum Verbinden mit der Datenbank
$db_name = "database"; // Der Name der Datenbank selbst, er muss über das DBMS erstellt werden
$mysqli = new mysqli($db_hostnaam, $db_gebruiker, $db_wachtwoord, $db_naam);
?>
Anschließend können nach der Verbindung Daten mittels der SQL-Sprache angefordert werden. Unten sehen Sie ein Beispiel zum Abrufen eines Nachrichtenartikels:
<?php
$query = "SELECT * FROM artikel";
$result = $mysqli->query($query);
$row = $result->fetch_assoc();
echo htmlentities($row["Titel"]);
echo htmlentities($row["Botschaft"]);
?>
Sicherheit
PHP-Validierung ist sehr wichtig. Es wurde festgestellt, dass die Summe der Anwendungen, die in den Jahren 1996-2003 in PHP geschrieben wurden, ungefähr 29 % aller Sicherheitslücken (von beispielsweise Cross-Site-Scripting bis hin zu Denial-of-Service) ausmacht, die mit einer CVE-Referenz in gemeldet und registriert wurden die National Vulnerability Database, eine von der US-Regierung eingerichtete Website, auf der Software-Schwachstellen gemeldet werden. Es hat sich in der Vergangenheit herausgestellt, dass einige spezifische Spracheigenschaften und (Standard-) Konfigurationsparameter (wie magische Anführungszeichen und register_globals) PHP unsicher machen. Die Unterstützung für magic_quotes_gpc und register_globals wurde seit Version 5.3.0 als veraltet markiert und seit Version 5.4.0 vollständig aus PHP entfernt.
Darüber hinaus werden auch regelmäßig Sicherheitslücken in PHP selbst gefunden und behoben, etwa 658 Stück (gezählt bis 15.04.2022).
Mindestens eine dieser Sicherheitslücken wurde 2012 von den Niederländern entdeckt und ist der National Vulnerability Database als CVE-2012-1823 bekannt. Die Schwachstelle bestand darin, dass der Quellcode von PHP-Seiten auf einigen Serverkonfigurationen als abfragbar befunden wurde, indem nur ein einziger Parameter zur URL der Seite hinzugefügt wurde. Die Versionen 5.3.12 und 5.4.2 wurden speziell veröffentlicht, um diese Schwachstelle zu beheben.
Entwicklungsumgebungen
Viele Quellcode-Editoren bieten Unterstützung für PHP, z. B. Syntaxfärbung und Autovervollständigung. Einige davon sind:
- Aptana Studio 3 (open source)
- Coda, ausschließlich für Mac OS X
- ConTEXT
- Crimson Editor
- Dreamweaver (Adobe)
- Eclipse mit PHP Development Tools
- gedit
- jEdit
- NetBeans (Apache.org)
- Notepad++
- Sublime Text
- Vim (Texteditor)
- PHPEdit
- PHPDesigner
- PhpStorm
- HTML-KIT
- PSPad
- NuSphere phpEd
- TextPad
- TextWrangler
- Notepad2
- EditPad
- Zend Studio
- BBEdit
- SciTE
Darüber hinaus stehen für PHP verschiedene Frameworks zur Verfügung, die dem Programmierer bestimmte Aufgaben abnehmen. Einige davon sind:
- CakePHP
- CodeIgniter
- Kohana
- Laravel
- PHPDevShell
- PHP on Trax
- QPHP
- Symfony
- Yii
- Zend Framework
Die Dokumentation kann mit PHPDoc aus dem Quellcode generiert werden; dies ähnelt Javadoc für Java. Für Unit-Tests stehen auch Standardlösungen wie PHPUnit zur Verfügung.