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
, vérifié que PHP était en train de le charger après le redémarrage d'Apache, mais la version de l'extension Xdebug fournie avec macOS 10.13 ne semble pas charger ou apparaître quand vous exécutez phpinfo();
Xdebug sur macOS 10.13 avec PHP 7
mon php.ini est certainement en cours de chargement:
$ php -i | grep php.ini
Configuration File (php.ini) Path => /etc
Loaded Configuration File => /etc/php.ini
Voici ce que mon /etc/php.ini ressemble à 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 , Fixe faute de frappe ici ...]
Cependant, Xdebug ne se charge pas et la vérification php -i
donnent 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 vers le 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 sur PHP 5 donc j'espère que quelqu'un pourra m'aider, ainsi que quiconque dans le futur, à résoudre ce problème.
Quand je vérifie mon journal apache je reçois l'erreur suivante:
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 suis pas faire des progrès en termes de savoir comment je peux résoudre cette erreur:
Symbol not found: _xdebug_monitored_function_dtor
Notez qu'Apache * peut utiliser des php.ini différents (un php.ini est utilisé pour CLI/terminal et un pour Apache/web sever). Il est donc préférable de vérifier la sortie 'phpinfo()' capturée dans le navigateur pour voir ce que php.ini est utilisé et si xdebug est chargé. Bien sûr, s'ils utilisent tous deux le même fichier ini, ces vérifications peuvent être effectuées dans le terminal. Et oui - 'zend_extension' avec le chemin complet (plus sûr) – LazyOne
Merci, j'ai vérifié à la fois CLI et le navigateur et ils sont tous les deux en train de charger le même fichier php.ini. –