Installation von Xdebug unter MacOS Catalina 10.15


13

Ich habe versucht, Xdebug unter OS X 10.15 zu installieren und bin auf folgendes Problem gestoßen:

/private/tmp/pear/install/xdebug/xdebug.c:25:10: Schwerwiegender Fehler: Die Datei 'php.h' wurde nicht gefunden

Ich habe versucht, das hier beschriebene Problem zu beheben: Installation von xdebug auf MacOs Mojave - Datei 'php.h' nicht gefunden

Leider können die Header-Dateien nicht in diesem Verzeichnis gefunden werden: /Library/Developer/CommandLineTools/Packages

Irgendwelche Ideen, wo ich die aktuellen Header-Dateien für OS X 10.15 bekommen kann?

Antworten:


28

tl; dr

Apple hat beschlossen, die Header-Datei /usr/includeund das macOS_SDK_headers_for_macOS_10.14.pkgPaket zu entfernen . Um Xdebug zu installieren, müssen Sie Xdebug manuell mit der richtigen Referenz in phpizeund kompilieren make.

Für weitere Details habe ich einen Blog-Artikel über das Problem und die Lösung geschrieben


Kurz gesagt, Apple entschied sich für /usr/includeMacOS Catalina, das in UNIX-Systemen für immer der Standardspeicherort für C-Header-Dateien war. Beim Versuch, über PEAR / PECL zu installieren, wird ein Fehler zurückgegeben, da der Compiler nach der erforderlichen Header-Datei sucht /usr/include. Die Lösung besteht also darin, Xdebug manuell zu kompilieren und den tatsächlichen Speicherort der Header-Dateien, die noch von Xcode bereitgestellt werden, manuell an einem anderen Speicherort anzugeben.

Stellen Sie zunächst sicher, dass Xcode installiert ist, einschließlich der Befehlszeilentools. Der folgende Befehl zeigt den Speicherort des Standard-SDK an:

$ xcrun --show-sdk-path
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk

Der gewünschte Header ( php.h) befindet sich dann in /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/php/main.

Quelle abrufen

Lassen Sie uns 2.7.2 kompilieren und den Quellcode von git abrufen . Alternativ können Sie die Quelle von der Xdebug-Site herunterladen .

git clone https://github.com/xdebug/xdebug.git
cd xdebug
git checkout tags/2.7.2

phpize

Als nächstes müssen wir eine Kopie erstellen, phpizedamit wir den Include-Pfad bearbeiten können:

cp /usr/bin/phpize .
nano ./phpize

Finden Sie diese Zeile:

includedir="`eval echo ${prefix}/include`/php"

... und ersetzen Sie es durch diese Zeile:

includedir="/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/php"

Ausführen phpize:

./phpize

Sie sollten jetzt so etwas sehen:

Configuring for:
PHP Api Version:         20180731
Zend Module Api No:      20180731
Zend Extension Api No:   320180731

Konfigurieren und erstellen

Wir können jetzt konfigurieren:

./configure --enable-xdebug

... und führen Sie make mit unserem benutzerdefinierten SDK-Speicherort aus, der als Compiler-Flags definiert ist:

make CPPFLAGS='-I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/php -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/php/main -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/php/TSRM -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/php/Zend -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/php/ext -I/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/php/ext/date/lib'

Könnte eine Warnung sehen, ignorieren Sie sie vorerst. Schließlich müssen wir laufen:

make install

Auch dieser Befehl schlägt fehl, da die Erweiterung nicht an die richtige Stelle verschoben werden kann. SIP wird es verhindern. Aber keine Sorge, wir kümmern uns im nächsten Schritt manuell darum. make install ist weiterhin erforderlich, da die * .so-Datei signiert wird.

Unterstützung in PHP aktiviert

Als nächstes verschieben wir die ausführbare Datei an einen sicheren Ort. Ich benutze /usr/local/php/extensions.

sudo mkdir -p /usr/local/php/extensions
sudo cp /usr/lib/php/extensions/no-debug-non-zts-20180731/xdebug.so /usr/local/php/extensions

Dann bearbeiten wir die PHP-Konfiguration, um Xdebug zu aktivieren. Einfach bearbeiten php.ini:

sudo nano /etc/php.ini

Und wir fügen unten Folgendes hinzu:

[xdebug]
zend_extension=/usr/local/php/extensions/xdebug.so
xdebug.remote_enable=on
xdebug.remote_log="/var/log/xdebug.log"
xdebug.remote_host=localhost
xdebug.remote_handler=dbgp
xdebug.remote_port=9000

Starten Sie den eingebauten Server neu, um sicherzugehen:

sudo apachectl restart

Und schließlich testete alles gut:

php -i | grep "xdebug support"

Wenn der obige Befehl nichts zurückgibt, ist Xdebug bei Ihrer Installation nicht verfügbar. Gehen Sie die Schritte zurück, um herauszufinden, was fehlt.


BEARBEITEN

Eine vollständigere Lösung wäre, das Ergebnis von zu bearbeiten php-config --include-dir, das zurückgegeben wird /usr/include/php. Dadurch würde jede Installation die erforderlichen Header-Dateien finden, ohne Dateien oder Compiler-Flags manuell bearbeiten zu müssen.


1
Wertvollste Antwort! Dies sollte als korrekt markiert werden! Danke mein Herr!
eltomato

Sie haben meinen
Tag

Dies ist der beste Weg, um das Problem zu beheben. Es hat bei mir funktioniert. Vielen Dank, Louis
Raja Mohammed

1
Für die Unterstützung von PHP 7.4 müssen Sie XDebug 2.9 (nicht 2.7.2) installieren. Befolgen Sie einfach diese Installationsanweisungen und make installführen Sie anschließend alle Schritte des Kapitels "Aktivierte Unterstützung in PHP" dieses Beitrags aus. Beachten Sie, dass sich die php.iniDatei möglicherweise an einem anderen Speicherort befindet. Führen Sie aus, php --inium herauszufinden, wo und bearbeiten Sie die stattdessen verwendete.
Dejv

Ich war gut bis zum ./configureBefehl. Ich bekomme immer eine no such file or directory: ./configure. Jemand anderes stößt darauf oder bin ich nur der Glückliche? : D
cbloss793

0

Wenn Sie Brew verwenden, löse ich dieses Problem, indem ich PHP neu installiere und neu verknüpfe:

brew reinstall php@7.3
brew link --overwrite php

Hat nicht funktioniert, Alter.
Eric Chen

Leider funktioniert das Brauen nicht wie erwartet, abhängig von Ihren Versionen.
Jamespsterling


-2

Ich würde empfehlen, dass Sie "Brew" verwenden, um PHP zu installieren, und dann das "pecl" -Tool verwenden, das mit der installierten Version von Brews PHP geliefert wird, um Xdebug zu installieren.


Genau das habe ich getan. Beim Versuch, Xdebug mit pecl zu installieren, erhalte ich den oben genannten Fehler
Günter

1
Das heißt, es wird das falsche Pecl-Tool ausgewählt - das mit Ihrem Mac installierte. Sie müssen sicherstellen, dass Sie das mitgelieferte Gebräu verwenden.
Derick

@Guenter hat dieser Hinweis Ihr Problem gelöst? Ich habe die gleichen Probleme und habe es getan brew install php, erhalte aber immer noch den gleichen Fehler.
Carter Pape

Danke @Derick, das hat mein Problem gelöst
Günter

1
pecl install xdebugarbeitete für mich unter 10.15.3
Juanmi Sosso
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.