Donc, macOS High Sierra 10.13 est maintenant livré avec PHP 7.1. Lors de la configuration d'Apache, j'ai également créé un nouveau /etc/php.ini
à partir du fichier /etc/php.ini.default
, en vérifiant que celui-ci était chargé par PHP après le redémarrage d'Apache. Toutefois, la version de l'extension Xdebug fournie avec macOS 10.13 ne semble pas se charger. ou présentez-vous lorsque vous exécutez phpinfo();
Mon php.ini est définitivement en cours de chargement:
$ php -i | grep php.ini
Configuration File (php.ini) Path => /etc
Loaded Configuration File => /etc/php.ini
Voici à quoi ressemble mon fichier /etc/php.ini où je configure Xdebug:
[xdebug]
zend_extension = "/usr/lib/php/extensions/no-debug-non-zts-20160303/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
[Mise à jour, corrigé cette faute de frappe ici ...]
Cependant, Xdebug ne charge pas et vérifie que php -i
ne donne aucun résultat:
$php -i | grep xdebug
PHP Warning: Method xdebug_start_function_monitor() cannot be a NULL
function in Unknown on line 0
PHP Warning: xdebug: Unable to register functions, unable to load in Unknown on line 0
Segmentation fault: 11
Et oui, le chemin d'accès au fichier est correct:
$ ls /usr/lib/php/extensions/no-debug-non-zts-20160303/xdebug.so
/usr/lib/php/extensions/no-debug-non-zts-20160303/xdebug.so*
Cela fonctionnait auparavant sur PHP 5, j'espère donc que quelqu'un pourra m'aider et aider quiconque à l'avenir à lutter contre ce problème.
Lorsque je consulte mon journal Apache, le message d'erreur suivant s'affiche:
Failed loading /usr/lib/php/extensions/no-debug-non-zts-20160303/xdebug.so: dlopen(/usr/lib/php/extensions/no-debug-non-zts-20160303/xdebug.so, 9): Symbol not found: _xdebug_monitored_function_dtor
Referenced from: /usr/lib/php/extensions/no-debug-non-zts-20160303/xdebug.so
Expected in: flat namespace
in /usr/lib/php/extensions/no-debug-non-zts-20160303/xdebug.so
Je ne fais pas de progrès en ce qui concerne la résolution de cette erreur:
Symbol not found: _xdebug_monitored_function_dtor
Ok, je me suis finalement mis à courir moi-même cela fonctionne parfaitement! Je suppose que le binaire xdebug fourni avec macOS High Sierra (disponible sous: /usr/lib/php/extensions/no-debug-non-zts-20160303/xdebug.so
) n'est pas compatible avec le nouveau moteur Zend de PHP7.
J'ai donc téléchargé la dernière source du site Web xdebug et j'ai procédé comme suit:
phpize
pour configurer la construction du nouveau moteur Zend;./configure
make
Maintenant, le nouveau binaire est sous modules/xdebug.so
Cependant, la protection SIP (System Integrity Protection) de macOS vous empêchera de remplacer le xdebug.so
sous /usr/lib/php/extensions/
. Je ne voulais pas désactiver ceci, alors j'ai créé un nouveau chemin de répertoire sous /usr/local/lib/php/extensions/
et copié le nouveau fichier binaire à cet emplacement. Je ne sais pas si ce répertoire est le meilleur endroit pour le mettre ou si c'est une mauvaise pratique, mais cela a fonctionné pour moi.
Finalement, j'ai reconfiguré mon php.ini pour utiliser le nouveau binaire et tout a fonctionné parfaitement!
Pour l'installer, vous devez avoir des outils de ligne de commande xcode.
Donc, vous devez exécuter:
xcode-select --install
Ensuite, vous devez installer autoconf:
brew install autoconf
Ensuite, vous devez télécharger le code à partir d’ici. Après cela, vous devez vous lancer dans le dossier du code source:
phpize
./configure
make
Sudo cp modules/xdebug.so /usr/local/php/extensions
(si le répertoire n'existe pas, allez le créer)Et enfin, dans php.ini, ajouter
zend_extension=/usr/local/php/extensions/xdebug.so
Après cela, vous pouvez activer xdebug dans php.ini et redémarrer Apache
Sudo apachectl restart
vous avez fait une faute de frappe dans "zend_extention". cela devrait être zend_extension . et je pense que le chemin complet est inutile zend_extension = xdebug.so .__ devrait suffire
Pour tous ceux qui arrivent tard à cette soirée, la tentative initiale de la question semble bien fonctionner sous macOS 10.13.6