Beim Aktualisieren der PHP-Version auf localhost Mojave stecken geblieben

Ich versuche, PHP7.2 auf localhost zum Laufen zu bringen, aber phpinfo() sagt immer wieder, dass 7.1.19 vorhanden ist, während ~php -v mir sagt, dass PHP7.2.18 vorhanden ist.

Ich starte ~php -v es sagt:

PHP 7.2.18 (cli) (erstellt: 2. Mai 2019 13:03:01) (NTS) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies mit Zend OPcache v7.2.18, Copyright (c) 1999–2018, von Zend Technologies

~echo $PFAD

/usr/local/opt/php@7.2/sbin:/usr/local/opt/php@7.2/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/ Applications/VMware Fusion.app/Contents/Public:/opt/X11/bin

Ich habe PHP7.2 per Brew-In installiert

➜ php@7.2 pwd
/usr/local/opt/php@7.2

Ich erwarte, dass auf localhost PHP 7.2.18 installiert wird.

AKTUALISIEREN

Befolgen Sie diese Anweisungen von dem Link, der von @ miken32 erwähnt wird ( Wie verwende ich die PHP, die das Gebräu installiert hat? )

httpd.conf im Ordner /etc/apache2 bearbeitet

#LoadModule php7_module libexec/apache2/libphp7.so
LoadModule php7_module /usr/local/opt/php@7.2/lib/httpd/modules/libphp7.so

Wenn ich die erste Zeile auskommentiere und die zweite Zeile kommentiere, kann ich phpinfo() von localhost ausführen, es heißt jedoch, es sei PHP 7.1.19 und php -v7.2.18

Falls ich die erste Zeile auskommentiere und die zweite Zeile auskommentiere, startet localhost nicht und php -vsagt 7.2.18

Ich habe diese Schritte auch befolgt, aber auch kein Glück.

$ brew update php // get the latest homebrew php packages
$ brew install php@7.2
$ brew link php@7.2 // create an alias to this keg-only version; see comments output during installation
$ echo 'export PATH="/usr/local/opt/php@7.2/bin:$PATH"' >> ~/.bash_profile // add the alias to your path; see comments output during installation
$ source ~/.bash_profile // reload .bash_profile to use the new settings immediately
$ sudo apachectl restart

Habe es auch mit Brauen versucht, link php71 --forceaber das hat auch nicht geholfen.

Es scheint also, dass der Webserver nicht startet, wenn ich die Zeilen httpd.conf wechsle

Irgendwelche Schritte, die ich unternehmen kann, um 7.2.18 zum Laufen zu bringen?

AKTUALISIERUNG 2

➜  apache2 sudo apachectl -t  

httpd: Syntaxfehler in Zeile 178 von /private/etc/apache2/httpd.conf: Kann /usr/local/opt/php@7.2/lib/httpd/modules/libphp7.so nicht in den Server laden: dlopen(/usr/local /opt/php@7.2/lib/httpd/modules/libphp7.so, 10): kein passendes Bild gefunden. Gefunden:\n\t/usr/local/opt/php@7.2/lib/httpd/modules/libphp7.so: Codesignatur in (/usr/local/opt/php@7.2/lib/httpd/modules/libphp7 .so) nicht gültig für die Verwendung im Prozess mit Bibliotheksvalidierung: Zugeordnete Datei hat kein cdhash, vollständig unsigniert? Code muss mindestens ad-hoc signiert sein.\n\t/usr/local/opt/php@7.2/lib/httpd/modules/libphp7.so: stat() ist mit errno=22 fehlgeschlagen

Zeile 178 sagt:

LoadModule php7_module /usr/local/opt/php@7.2/lib/httpd/modules/libphp7.so

Muss mal reinschauen. Irgendwo auf SO in einem älteren Beitrag wurde der Vorschlag gemacht, ob es "seltsame" Zeichen gibt, die den Fehler verursachen könnten. Verifiziert es und das einzig Seltsame ist '@'. Das ist jedoch Brews Out-of-the-Box-Installation.

Im Moment ist es schwierig zu verstehen, was das aktuelle Problem ist und warum Sie versucht haben, dieses spezielle Problem zu lösen. Höchstwahrscheinlich steht alles in Ihrem Text, aber es könnte hilfreich sein, wenn Sie etwas mehr Struktur anwenden und sich auf die wichtigsten Punkte konzentrieren könnten.

Antworten (1)

Sie versuchen, das PHP-Modul von HomeBrew mit dem von Apple bereitgestellten Apache-Webserver zu verwenden. Das ist eine nicht unterstützte Konfiguration auf Mojave.

Es funktioniert nicht, weil macOS versucht zu validieren, dass Ihre Software korrekt signiert ist (d. h. nicht manipuliert wurde) – und diese Prüfung fehlschlägt, nachdem Sie geändert haben, welche Binärdateien geladen werden sollen. Sie können dies beheben, indem Sie SIP (System Integritätsschutz) - aber das ist eine wirklich schlechte Idee, da dies den Schutz auch für Ihre anderen Programme deaktivieren würde.

Die richtige Vorgehensweise besteht darin, den integrierten Apache-Webserver nicht mehr zu verwenden und stattdessen einen anderen Webserver zu verwenden. Der einfachste Übergang ist die einfache Verwendung von Apache, das stattdessen von HomeBrew bereitgestellt wird.

Sie können dies tun, indem Sie zuerst Apache von HomeBrew installieren:

brew install httpd

Verhindern Sie dann, dass macOS den von Apple bereitgestellten Apache beim Booten startet:

sudo launchctl unload -w /System/Library/LaunchDaemons/org.apache.httpd.plist

Stellen Sie sicher, dass die neue PHP-Modulzeile, die Sie eingefügt haben, jetzt nicht kommentiert ist und die alte - dh, lassen Sie es so aussehen:

#LoadModule php7_module libexec/apache2/libphp7.so
LoadModule php7_module /usr/local/opt/php@7.2/lib/httpd/modules/libphp7.so

Starten Sie dann die neue Apache-Webserver-Installation:

brew services restart httpd

Abhängig von Ihren Einstellungen können Sie sich dann mit Ihrem Browser mit localhost:80 oder localhost:8080 verbinden, um Ihre Website anzuzeigen.

Dieser hier hat mir wirklich geholfen! Ich kann jetzt localhost:8080 starten und sehe 'It Works!'. Eine Sache bleibt noch, wo finde ich die httpd.conf , um die notwendigen Änderungen vorzunehmen, um fi auf /Users/<username>/Sites zu verweisen? Ich habe mehrere httpd gefunden .conf-Dateien, aber keine davon macht Sinn, wenn ich die erforderlichen Anpassungen vornehme. Die in /usr/local/etc/httpd scheint nicht wirksam zu werden.
Normalerweise ist es so etwas wie /usr/local/etc/apache2/2.4/httpd.conf oder /usr/local/etc/httpd/httpd.conf, je nachdem, was genau Sie installiert haben. Verwenden Sie den Befehl „brew ls -v httpd“, um die Liste der installierten Dateien abzurufen, und Sie werden sie dort sehen.
@ user2037412 Da diese Antwort für Sie funktioniert hat, markieren Sie die Antwort bitte als akzeptiert!
Danke! Der Befehl brew ls -v httpd zeigt Dateien in ‚/usr/local/Cellar/httpd/2.4.39/.bottle/etc/httpd‘ an. Es gibt eine httpd.conf-Datei. Bedeutet das angesichts der Ordnerstruktur, dass etwas im Setup nicht stimmt?
habe mehrere httpd.conf-Dateien bearbeitet und nach jeder Änderung ein 'Brew Services Restart httpd' durchgeführt, aber es scheint, dass keine Änderung wirksam wird :(
Schließlich habe ich Brew gemäß den Anweisungen auf der Website von Brew deinstalliert und ein neues Setup basierend auf Setup Apache und PHP auf Mojave durchgeführt , und ich habe es zum Laufen gebracht. Pfff. Es wäre definitiv, wenn Apple mit seiner neuen Software PHP 7.2 und höher unterstützen würde.
Kommentare haben mir geholfen, ich war fast am Ziel. Ich tat dies: LoadModule php7_module /opt/homebrew/opt/php@7.4/lib/httpd/modules/libphp.so statt: LoadModule php7_module /opt/homebrew/opt/php@7.4/lib/httpd/modules/libphp7 .So