J'ai essayé d'installer Xdebug sur OS X 10.15 et je rencontre le problème suivant:
/private/tmp/pear/install/xdebug/xdebug.c:25:10: erreur fatale: fichier 'php.h' introuvable
J'ai essayé de résoudre le problème comme décrit ici: Installation de xdebug sur MacOs Mojave - fichier 'php.h' introuvable
Malheureusement, les fichiers d'en-tête sont introuvables dans ce répertoire: /Library/Developer/CommandLineTools/Packages
Toutes les idées où je peux obtenir les fichiers d'en-tête actuels pour OS X 10.15?
Apple a décidé de supprimer le fichier d'en-têtes dans /usr/include
et le macOS_SDK_headers_for_macOS_10.14.pkg
paquet. Pour installer Xdebug, vous devrez compiler manuellement Xdebug avec la référence correcte dans phpize
et make
.
Pour plus de détails, j'ai écrit un article de blog sur le problème et la solution
Pour faire court, Apple a décidé de nuke /usr/include
dans MacOS Catalina, qui a toujours été l'emplacement par défaut du fichier d'en-tête C dans les systèmes UNIX. Essayer d'installer via PEAR/PECL retournera une erreur car le compilateur recherchera le fichier d'en-têtes nécessaire dans /usr/include
. La solution consiste donc à compiler Xdebug manuellement, en spécifiant manuellement l'emplacement réel des fichiers d'en-tête, qui sont toujours fournis par Xcode, juste à un emplacement différent.
Tout d'abord, assurez-vous que Xcode est installé, y compris les outils de ligne de commande. La commande suivante affichera l'emplacement du SDK par défaut:
$ xcrun --show-sdk-path
/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk
L'en-tête que vous voudrez (php.h
) sera alors dans /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/php/main
.
Compilons 2.7.2 , obtenant le code source de git. Alternativement, vous pouvez télécharger la source depuis site Xdebug .
git clone https://github.com/xdebug/xdebug.git
cd xdebug
git checkout tags/2.7.2
Ensuite, nous devons faire une copie phpize
afin que nous puissions modifier le chemin d'inclusion:
cp /usr/bin/phpize .
nano ./phpize
Trouvez cette ligne:
includedir="`eval echo ${prefix}/include`/php"
... et remplacez-le par cette ligne:
includedir="/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX.sdk/usr/include/php"
Exécutez phpize
:
./phpize
Vous devriez maintenant voir quelque chose comme ceci:
Configuring for:
PHP Api Version: 20180731
Zend Module Api No: 20180731
Zend Extension Api No: 320180731
Nous pouvons maintenant configurer:
./configure --enable-xdebug
... et exécutez make en utilisant notre emplacement SDK personnalisé défini comme drapeaux de compilation:
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'
Pourrait voir un avertissement, ignorez-le pour l'instant. Enfin, nous devons exécuter:
make install
Encore une fois, cette commande échouera car elle ne peut pas déplacer l'extension au bon endroit. SIP l'empêchera. Mais pas de soucis, nous nous en occuperons manuellement à l'étape suivante. Make install est toujours nécessaire car il signera le fichier * .so.
Ensuite, nous déplaçons l'exécutable dans un endroit sûr. J'utilise /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
Ensuite, nous éditons la configuration PHP pour activer Xdebug. Modifiez simplement php.ini
:
Sudo nano /etc/php.ini
Et nous ajoutons ce qui suit en bas:
[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
Redémarrez le serveur intégré pour être sûr:
Sudo apachectl restart
Et enfin tester tout s'est bien passé:
php -i | grep "xdebug support"
Si la commande ci-dessus ne renvoie rien, alors Xdebug n'est pas disponible sur votre installation. Revenez en arrière pour découvrir ce qui manque.
Une solution plus complète consisterait à modifier le résultat de php-config --include-dir
, qui renvoie /usr/include/php
. Cela permettrait à toute installation de trouver les fichiers d'en-tête nécessaires sans avoir à modifier manuellement les fichiers ou les indicateurs du compilateur.
Si vous utilisez brew, je résous ce problème en réinstallant php et en reliant:
brew reinstall [email protected]
brew link --overwrite php
vous pouvez trouver des instructions détaillées avec des correctifs prêts à l'emploi sur ce site: https://profilingviewer.com/installing-xdebug-on-catalina.html