Da setzt man sich an sein privates Projekt und will wieder mal ein bisschen daran arbeiten… und kommt nicht dazu.
Ich glaube das kennen wir alle: Irgendein Fehler sorgt dafür, dass wir ganz andere Dinge tun müssen.
Laravel Herd
Da ich mit Laravel arbeite, hat Laravel Herd längst den Platz von xampp und Co übernommen, um mir eine funktionstüchtige Arbeitsumgebung zur Verfügung zu stellen.
Das bietet viele Erleichterungen, wie z.B. den fließenden Wechsel der benutzten PHP-Version, eine Projektverwaltung, externe Dumps etc.
Das funktionierte bislang auch wirklich prima.
Ich hatte gesehen, das in meinem Hosting-Paket nun auch mit PHP 8.4 arbeiten kann und wollte so die Version auch im Projekt übernehmen.
Also Herd öffnen PHP-Version ändern, Projekt öffnen und den Composer für ein Update anwerfen. Da gibt es schließlich sicher was anzupassen, oder? 😉
OpenSSL-Fehler?
The openssl extension is required for SSL/TLS protection but is not available. If you can not enable the openssl extension, you can disable this error, at your own risk, by setting the ‚disable-tls‘ option to true.
Wie bitte?
Die kann doch nicht einfach über Nacht verschwunden sein…
Ist sie auch nicht.
Nach einigem Suchen und probieren und einer gezielten Frage an den in PHP Storm residenten Assistenten war klar, das offenbar eine vernünftige Version der php.ini fehlte.
Die war für die Versionen 8.4 und 8.5 schlicht mit jeder Menge leerer Zeilen befüllt und am Ende nur mit dem Appendix von Herd-spezifischen Parametern befüllt.
Die befindet sich im Verzeichnis C:\Users\DeinUsername\.config\herd\bin in einem Versionsspezifischen Verzeichnis, hier also php84.
Fehlende php.ini
PHP übernimmt in höheren Versionen ja durchaus selbst die Verantwortung für einige Extensions, aber ganz ohne php.ini geht es eben dann doch nicht.
Der einfachste Workaround ist also eine Ini-Datei da rein zu kopieren.
Ich habe die Ini-Datei aus dem Ordner php83 in den Ordner php84 kopiert und hatte damit das Gros der Dinge schon erledigt.
Es müssen aber noch die Parameter von Herd da am Ende rein und angepasst werden, da steht sonst der falsche Verweis drin:
[Herd]
; Enable PHP Redis
extension="C:\Program Files\Herd\resources\app.asar.unpacked\resources\bin\phpredis\php_redis-8.4.dll"
[Herd]
; Enable MongoDB
extension="C:\Program Files\Herd\resources\app.asar.unpacked\resources\bin\phpmongodb\php_mongodb-8.4.dll"
extension = 'C:\Program Files\Herd\resources\app.asar.unpacked\resources\bin\phpherd\php_herd-8.4.dll'
Damit war das Problem nun wirklich erledigt.
Lässt man nun den Composer laufen, funktioniert alles wie gewohnt.
Eine Kleinigkeit bleibt aber noch: Es werden Deprecations angezeigt.
Diese Zeilen kann man nun nachträglich noch in der Datei deaktivieren („;“ davor setzen) oder die Zeile ganz löschen.
Fazit
Es liegt also am Ende kein Fehler in OpenSSL oder PHP vor, sondern Laravel Herd scheint an der Stelle fehlerhaft zu arbeiten.
Wenn ich am Wochenende etwas Zeit habe, gucke ich mal dort vorbei um zu sehen, ob der Fehler schon erkannt ist oder es einer Fehlermeldung bedarf. 🙂
(Beitragsbild mit WordPress AI erstellt, nicht toll aber ausreichend)
@TheFan1968 schau dir mal DDev an. Hat bei uns sämtliche Laravel Herd, Sail Vagrant Optionen abgeräumt
@atreyu @TheFan1968 Das Schöne an Herd ist aber, dass man kein Docker braucht. Auch wenn es ein super Tool für viele Anwendungsfälle ist, ist ohne doch oft einfacher.
Danke für den Tipp, aber für mein bisschen privaten Kram ist Herd das richtige Werkzeug. 🙂
Auf der Arbeit werde ich mir das aber mal anschauen: Da mutet man mir zu mit 2 Servern rum zu wurschteln…