Apache kann keine unsignierten PHP-Erweiterungen unter Mac OS Mojave laden

3

Nach dem Upgrade auf MacOS Mojave kann Apache keine PHP-Erweiterungen mehr laden. Bei jeder Erweiterung wird der folgende Fehler im Apache-Protokoll angezeigt. Es scheint, dass Apple die Bibliotheksüberprüfung über Apache auf MacOS Mojave implementiert hat. Das macht es anscheinend unmöglich, nicht signierte Binärdateien mit Apache zu laden.

Gibt es eine Problemumgehung, bei der das SIP von MacOS nicht deaktiviert werden müsste?

Failed loading //usr/local/php/extensions/xdebug.so:  dlopen(//usr/local/php/extensions/xdebug.so, 9): no suitable image found.  Did find:
        //usr/local/php/extensions/xdebug.so: code signature in =(//usr/local/php/extensions/xdebug.so) 
not valid for use in process using Library Validation: mapped file has no cdhash, completely unsigned? 

Der Code muss mindestens ad-hoc signiert sein. //usr/local/php/extensions/xdebug.so: stat () ist mit errno = 22 fehlgeschlagen

Delphirules
quelle
1
Siehe diesen Thread für Lösungen: (1) Installieren Sie Apache und PHP von Homebrew (Antwort von suneet64), (2) In /etc/apache2/httpd.confdie Zeile LoadModule php7_module libexec/apache2/libphp7.soam Ende, (3) Noch in /etc/apache2/httpd.confuncomment Linie 545 , die sagt Include /private/etc/apache2/other/*.conf. Lassen Sie mich wissen, ob einer oder mehrere von ihnen das Problem gelöst haben, und ich werde eine ausführlichere Antwort hinzufügen.
Harrymc
das gleiche Problem hier mitdispatcher-apache2.4-4.2.0.so
daVe
@harrymc Danke für den Vorschlag, aber gibt es eine andere Problemumgehung, bei der keine neue Instanz von Apache / PHP installiert werden muss?
Delphirules
Die obigen Problemumgehungen sind unabhängig. Probieren Sie Nummer (2) und (3) aus und warten Sie mit (1), bis Sie sich dazu entschließen, es zu versuchen.
Harrymc
@harrymc Soll ich 2 UND 3 machen oder nur 2 oder 3?
Delphirules

Antworten:

2

Der Thread Installation auf Mojave listet mehrere unabhängige Problemumgehungen auf:

  1. Deinstallieren Sie Apache und PHP von Ihrem Computer und entfernen Sie alle Reste
  2. Installiere Apache und PHP von Homebrew (Antwort von suneet64)
  3. Fügen Sie am Ende /etc/apache2/httpd.confder Zeile hinzu

    LoadModule php7_module libexec/apache2/libphp7.so
    
  4. Noch in /etc/apache2/httpd.confKommentarzeile 545 heißt das

    Include /private/etc/apache2/other/*.conf
    
Harrymc
quelle
Zum Aufräumen siehe diese Antwort . Möglicherweise durchsuchen Sie das Dateisystem zuletzt nur *httpd*nach Resten, achten Sie jedoch darauf, diese ordnungsgemäß zu deinstallieren.
Harrymc
Danke, ich könnte einen von ihnen entfernen. Aber jetzt kann ich nicht finden, wo das korrekte Zugriffs- / Fehlerprotokoll des Apache ist; Wie kann ich wissen, wo sie sind? Die auf '/ private / var / log / apache2' werden nicht aktualisiert.
Delphirules
Ich kenne Ihr Setup nicht, daher kann ich nur sagen, dass Sie für einen sauberen Zustand zunächst sicherstellen sollten, dass sich keine Reste auf dem Computer befinden. Suchen Sie nach bekannten Dateinamen, um sicherzugehen, dass Sie alle haben. Es gibt nur so viel, was ich aus der Ferne tun kann.
Harrymc
Ich habe es gefunden, ich bin fast da. Wenn ich nun die Zeile 'LoadModule php7_module libexec / apache2 / libphp7.so' hinzufüge, erhalte ich den folgenden Fehler: httpd: Syntaxfehler in Zeile 535 von /usr/local/etc/httpd/httpd.conf: Kann libexec / apache2 / nicht laden libphp7.so in den Server: dlopen (/usr/local/opt/httpd/libexec/apache2/libphp7.so, 10): Bild nicht gefunden
delphirules
"image not found": Sie müssen herausfinden, wo sich libphp7.so befindet. Aber hast du ohne getestet?
Harrymc