Laragon - Apache-Fehler nach Curl-Aktivierung

The way to get rid of the http Error

PHP-Entwicklung auf Windows

Für einige Softwareentwicklungs-Projekte benötige ich spezielle Windows-Umgebungen. Ich nutze aus Bequemlichkeitsgründen Laragon. Dies ist eine Software zur schnellen Installation eines lokalen Webservers mit PHP und Co. Die Installation geht quasi mit wenig Klicks und per bequemer Oberfläche lassen sich Apache oder Nginx mit PHP, Ruby, Go, Redis, Memcache, Cron-Jobs und MySQL-Datenbank installieren. Per Knopfdruck lassen sich die PHP-Versionen ändern und diverse Konfigurationen vornehmen.
Ich selbst nutze eine spezielle Konfiguration, die es mir erlaubt für jeden Vhost eigene PHP-Versionen mit eigenen PHP-Ini-Dateienzu nutzen. 

Was kostet das Laragon: Aktuell nichts.

Fehler durch Curl

Ich musste in einer PHP 8.2 - Umgebung das PHP-Paket CURL aktivieren. Dies schien zunächst problemlos zu funktionieren. Später stellte sich heraus, dass das Programm Laragon selbst einen Fehler erzeugt, sodass Konfigurationen und Neustarten von Services nicht mehr richtig funktionieren.

The procedure entry point 
nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation
could not be located in the dynamic link library
C:\\laragon\\bin\\php\\php-8.2\\ext\\php_curl.dll

Fehlerursache

Durch das Aktivieren der PHP-Curl-Erweiterung in der PHP-Ini-Datei 

extension=php_curl.dll

wird die neue Extension in den HTTP-Stack geladen. Darin wird die Funktion nghttp2_option_set_no_rfc9113_leading_and_trailing_ws_validation() benutzt. Diese stammt aus der C-Bibliothek nghttp2, einer Implementierung des HTTP/2-Protokolls. Sie dient zur Konfiguration von Optionen für eine nghttp2_session und wurde offiziell im September 2022 eingeführt.

Apache selbst unterstützt diese Funktion mit mod_http2 v2.0.11 ab Apache‑2.4.57. Diese ist seit April verfügbar. 

Laragon-Versionen mit älteren Apache-Versionen erzeugen entsprechende Fehlermeldung.

Einfache Lösung durch Modularisierung

Ein großer Vorteil von Laragon ist seine durchdachte Modularität: Komponenten wie PHP, MySQL, Apache oder Node.js sind nicht fest im System integriert, sondern können wie austauschbare Bausteine ersetzt oder aktualisiert werden. Diese Flexibilität ermöglicht es, auf neue Anforderungen oder Probleme – wie im vorliegenden Fall – schnell zu reagieren.

Da der Fehler durch eine veraltete Apache-Version verursacht wird, besteht die einfachste Lösung darin, eine aktuelle Apache-Version manuell in Laragon einzubinden. Dabei handelt es sich lediglich um das Herunterladen der Apache-Binaries aus dem Internet und das hinzufügen eines Ordners in die Laragon-Datei-Struktur. 

Dies ist mit wenigen Schritten und innerhalb von 5 Minuten erledigt.

Lösungsschritte

  1. Aktuelle Version von Apache für Windows herunterladen:
    https://www.apachelounge.com/download/
    Stand heute: httpd-2.4.63-250207-win64-vs17.zip
  2. Datei lokal entpacken
  3. Den Ordner Apache24 nach C:\laragon\bin\apache kopieren und in den Versionsnamen (Name der Zip-Datei) umbenennen
  4. Klickt man nun mit der rechten Maustaste in die Laragon-Oberflcähe kann unter Apache - Version die neue http-Version ausgewählt und geladen werden. 
  5. Der Apache-Service lässt sich nun wieder ohne Fehlermeldung neustarten