Installation einer PHP-Erweiterung unter Windows
Unter Windows gibt es zwei Möglichkeiten, eine PHP-Erweiterung zu laden:
Entweder sie wird in PHP einkompiliert oder sie wird als DLL geladen. Eine
vorkompilierte Erweiterung zu laden ist die einfachste und auch die
bevorzugte Methode.
Um eine Erweiterung zu laden, muss sie als .dll-Datei
auf dem System vorhanden sein. Alle Erweiterungen werden automatisch und
regelmäßig von der PHP-Gruppe kompiliert (bezüglich des Downloads siehe
nächster Abschnitt).
Informationen darüber, wie Erweiterungen beim Kompilieren in PHP
eingebunden werden, sind in der Dokumentation zum
Erstellen aus dem Quellcode
zu finden.
Um eine eigenständige Erweiterung (auch DLL-Datei genannt) zu kompilieren,
siehe die Dokumentation
Erstellen aus dem Quellcode.
Wenn die DLL-Datei weder in der PHP-Distribution noch in PECL enthalten
ist, muss sie möglicherweise kompiliert werden, bevor die Erweiterung
verwendet werden kann.
Wo finde ich eine Erweiterung?
PHP-Erweiterungen heißen normalerweise php_*.dll
(wobei der Stern für den Namen der Erweiterung steht) und befinden sich im
Ordner PHP\ext.
PHP wird mit den Erweiterungen ausgeliefert, die für die meisten
Entwickler am nützlichsten sind. Sie werden als
bundled Erweiterungen bezeichnet.
Wenn allerdings die benötigte Funktionalität von keiner der mitgelieferten
Erweiterungen zur Verfügung gestellt wird, kann eine solche Erweiterung
vielleicht in » PECL gefunden werden. Die PHP Extension Community
Library (PECL) ist eine Sammlung von PHP-Erweiterungen, die eine Liste
aller bekannten Erweiterungen sowie einen Hosting-Service für das
Herunterladen und Entwickeln von PHP-Erweiterungen bereitstellt.
Wenn eine Erweiterung für bestimmte Zwecke entwickelt wurde, kann diese
auf PECL zur Verfügung gestellt werden, damit auch andere davon
profitieren können, die die gleichen Anforderungen haben. Ein netter
Nebeneffekt ist, dass dies eine gute Möglichkeit ist, Feedback,
(hoffentlich) Dank, Fehlerberichte und sogar Korrekturen/Patches zu
erhalten. Bevor eine Erweiterung zum Hosting in PECL eingereicht wird,
sollte » PECL submit gelesen
werden.
Welche Erweiterung soll ich herunterladen?
Häufig gibt es mehrere Versionen von einer DLL:
-
Verschiedene Versionsnummern (zumindest die ersten beiden Nummern
sollten übereinstimmen)
-
Verschiedene Einstellungen für die Thread-Sicherheit
-
Verschiedene Prozessorarchitekturen (x86, x64, ...)
-
Verschiedene Einstellungen für das Debugging
-
etc.
Es ist zu beachten, dass die Einstellungen der Erweiterung mit den
Einstellungen des verwendeten PHP-Programms übereinstimmen sollten. Das
folgende PHP-Skript zeigt alle PHP-Einstellungen an:
Alternativ können Sie Folgendes über die Befehlszeile ausführen:
drive:\path\to\php\executable\php.exe -i
Laden einer Erweiterung
Die übliche Methode, eine PHP-Erweiterung zu laden, besteht darin, sie in
die Konfigurationsdatei php.ini einzutragen. Es ist zu beachten, dass
bereits viele Erweiterungen in der php.ini enthalten sind, und dass nur
das Semikolon entfernt werden muss, um sie zu aktivieren.
Es ist auch zu beachten, dass seit PHP 7.2.0 anstelle des Dateinamens der
Erweiterung auch deren Name verwendet werden kann. Da dies unabhängig vom
Betriebssystem gilt und insbesondere für Neueinsteiger einfacher ist, ist
dies die empfohlene Methode, um die zu ladenden Erweiterungen anzugeben.
Dateinamen werden aus Gründen der Kompatibilität mit früheren Versionen
weiterhin unterstützt.
;extension=php_extname.dll
extension=php_extname.dll
; Seit PHP 7.2.0 vorzuziehen:
extension=extname
zend_extension=another_extension
Manche Webserver können allerdings etwas verwirrend sein, da sie nicht die
php.ini aus der PHP-Distribution verwenden. Um herauszufinden, wo sich
die tatsächlich verwendete php.ini befindet, kann der Pfad in
phpinfo() gesucht werden:
Configuration File (php.ini) Path C:\WINDOWS
Loaded Configuration File C:\Program Files\PHP\8.2\php.ini
Nachdem Sie eine Erweiterung aktiviert haben, speichern Sie die php.ini,
starten den Webserver neu und überprüfen die phpinfo()
erneut. Die neue Erweiterung sollte nun ihren eigenen Abschnitt haben.
Probleme beheben
Wenn die Erweiterung nicht in phpinfo() erscheint,
sollten die Logs überprüft werden, um herauszufinden, wo das Problem liegt.
Wenn PHP auf der Befehlszeile (CLI) verwendet wird, ist der Fehler beim
Laden der Erweiterung direkt auf dem Bildschirm sehen.
Wenn PHP über einen Webserver verwendet wird, hängen Ort und Format der
Logs von der Software ab. Da dies nichts mit PHP selbst zu tun hat,
sollte die Dokumentation des Webservers zu Rate gezogen werden, um die
Logs zu finden.
Die häufigsten Ursachen für Probleme sind die Speicherorte der DLL selbst
und der DLLs, von denen sie abhängt, der Wert der Einstellung
"extension_dir" in der php.ini
und falsche Einstellungen beim Kompilieren.
Wenn das Problem auf falsche Einstellungen beim Kompilieren zurückzuführen
ist, wurde wahrscheinlich nicht die richtige DLL heruntergeladen.
Versuchen Sie, die Erweiterung nochmal mit den richtigen Einstellungen
herunterzuladen. Auch hier kann phpinfo() eine große
Hilfe sein.