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 -v
7.2.18
Falls ich die erste Zeile auskommentiere und die zweite Zeile auskommentiere, startet localhost nicht und php -v
sagt 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 --force
aber 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.
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.
kein Hang