J'ai récemment installé xdebug
sur mon serveur, mais j'ai limité son utilisation à notre site de test, qui utilise son propre php.ini
fichier.
Par exemple, les sites de test php.ini
est situé à:
/home/test_site/public_html/subdomain_name/php.ini
À l'intérieur de ce php.ini
fichier J'ai ce qui suit pour xdebug:
[XDebug]
zend_extension = /usr/local/lib/php/extensions/no-debug-non-zts-20090626/xdebug.so
xdebug.profiler_append = 0
xdebug.profiler_enable = 1
xdebug.profiler_enable_trigger = 0
xdebug.profiler_output_dir = /home/test_site/xdebug
xdebug.profiler_output_name = "cachegrind.out.%s-%u.%h_%r"
Maintenant, la chose est, xdebug fonctionne bien, aucun problème.
Cependant, sur notre site principal, qui possède également son propre php.ini
fichier, qui se trouve par exemple à:
/home/main_site/public_html/php.ini
Dans ce fichier, je n'ai rien pour xdebug
là-dedans.
Maintenant, j'ai récemment installé un cron dans cpanel pour le main site
tel que:
php -f /home/main_site/public_html/cron_jobs/main_cron.php > /home/main_site/public_html/logs/main_cron.log 2>&1
Maintenant, après avoir vérifié la sortie du cron dans le fichier journal, j'obtiens la sortie:
Failed loading xdebug.so: xdebug.so: cannot open shared object file: No such file or directory
Pourquoi ai-je cette erreur alors que le site principal ne devrait même pas charger xdebug?
Même si les deux sites sont divisés et utilisent deux fichiers php.ini différents, CRON utilisera toujours le fichier php.ini que PHP-CLI est configuré pour utiliser. Donc, pour savoir quel php.ini CRON utilise, voici la commande à utiliser:
php -i | grep php.ini
Si PHP-CLI utilise un fichier php.ini que vous ne vous attendiez pas à utiliser (tel que /usr/local/lib/php.ini
) alors ce sera la clé pour comprendre pourquoi vous voyez des erreurs Xdebug dans les journaux.
Il s'avère que le /usr/local/lib/php.ini
fichier avait ces deux valeurs définies:
extension_dir = "/usr/local/lib/php/extensions/no-debug-non-zts-20090626"
zend_extension = "xdebug.so"
Cela provoquait l'erreur du script php qui était exécuté par CRON (c'est-à-dire PHP-CLI) car zend_extensions a besoin du chemin complet vers le module. Ceci est également indiqué dans la documentation Xdebug: http://xdebug.org/docs/install
Donc, pour vous débarrasser de l'erreur, commentez cette ligne (ou supprimez-la simplement). Vous pouvez également commenter ou supprimer le extension_dir
line tant que vous ne chargez aucun autre module tel que:
extension = memcached.so
Parfois, il peut être difficile de charger la bibliothèque XDebug car cela peut être fait en spécifiant le chemin dans php.ini ou en ajoutant la lib dans mods-available.
Tout d'abord, exécutez:
$ Sudo grep 'xdebug' -r /etc/php/*
Cela vous donnera les fichiers qui chargent l'extension.
Identifiez maintenant quel php.ini est utilisé:
$ php -i | grep php.ini
Cela vous donnera la version php utilisée (dans le cas où vous avez plusieurs versions php). Liez maintenant la version php avec le résultat de la première étape.
Maintenant, vous devez commenter la ligne où l'extension xdebug est chargée ou supprimer le fichier xdebug.ini (qui charge l'extension) de/etc/php/xx/mods-available (où xx représente la version php utilisée) ).
Pour mémoire, dans Linux Mint et je pense dans certains systèmes Ubuntu. Pour changer le php.ini, il vaut mieux aller dans / etc/php/7.0/cli/conf.d et chercher le xdebug.ini et vous devez changer les lignes dites dans le post ci-dessus le mien .