Comment désactiver XDebug

124

Je pense que mon serveur est devenu lent depuis que j'ai installé XDebug. Donc, afin de tester mon hypothèse, je veux désactiver complètement XDebug. J'ai recherché des didacticiels sur la façon de procéder, mais je ne trouve pas de telles informations.

Beto Aveiga
la source

Réponses:

163

Trouvez votre php.iniet recherchez XDebug.

Définissez xdebug autostart sur false

xdebug.remote_autostart=0  
xdebug.remote_enable=0

Désactivez votre profileur

xdebug.profiler_enable=0

Notez qu'il peut y avoir une perte de performances même avec xdebug désactivé mais chargé . Pour désactiver le chargement de l'extension elle-même, vous devez la commenter dans votre php.ini. Trouvez une entrée ressemblant à ceci:

zend_extension = "/path/to/php_xdebug.dll"

et mettez un ;pour le commenter, par exemple ;zend_extension = ….

Consultez ce post XDebug, comment désactiver le débogage à distance pour un seul fichier .php?

Uday Sawant
la source
Merci! J'ai trouvé que mon problème était APC, ma mémoire était apparemment faible. Vous avez raison, xdebug fait partie de PHP, pas d'un module d'Apache. Maintenant, tout va bien.
Beto Aveiga
1
@Uday et si je ne trouve rien de tout cela dans mon php.ini. J'ai vérifié partout dans / etc / php, y compris avec la recherche grep.
Haralan Dobrev
@HaralanDobrev Vérifiez phpinfo () pour voir si xdebug est réellement activé. si c'est le cas, vérifiez si vous avez des fichiers ini supplémentaires attachés au fichier php.ini. Assurez-vous également que vous modifiez le fichier ini correct. il est possible d'avoir ces fichiers à plusieurs endroits.
Uday Sawant
18
@UdaySawant J'ai pu le désactiver après avoir commenté la ligne zend_extension=/usr/lib/php5/20090626+lfs/xdebug.sode /etc/php5/conf.d/xdebug.ini. Cependant, ni dans /usr/lib/php5ni dans /etcles lignes spécifiées dans la réponse ne sont disponibles.
Haralan Dobrev
5
En fait, il vaut mieux ne pas charger l'extension du tout, et ne la charger que si nécessaire. XDebug ralentit beaucoup les choses, même s'il est désactivé. On peut ne pas avoir l'impression que les performances se sont autant dégradées, lors du débogage / profilage de certains scripts qui créent une page Web, mais avec les scripts de démon, cela montre beaucoup. Je viens d'écrire un article de blog sur pourquoi ne pas le charger du tout, c'est mieux, ici: bit.ly/14SaWpp
thesilentman
99

Une solution simple fonctionnant sur des distributions Linux similaires à Ubuntu

sudo php5dismod xdebug
sudo service apache2 restart
Arvi Võime
la source
10
Pourriez-vous s'il vous plaît élaborer davantage votre réponse en ajoutant un peu plus de description de la solution que vous fournissez?
abarisone
3
Cette commande est pour ubuntu pas centOS. Doit fournir cette explication car vous n'êtes pas la seule personne à utiliser la même distribution Linux.
MaXi32
1
c'est pour apache2 et non pour CLI. Ceux-ci peuvent avoir différents fichiers php.ini
Adib Aroui
6
En fonction de votre version PHP, vous devez entrer$ sudo phpdismod xdebug
RousseauAlexandre
2
Cette réponse s'applique uniquement à PHP lorsqu'il est utilisé avec le mod-php d'Apache.
John Hunt
35

Dans Linux Ubuntu ( peut-être aussi une autre distribution - ce n'est pas testé ) avec PHP 5 intégré, vous pouvez utiliser:

sudo php5dismod xdebug

Et avec PHP 7

sudo phpdismod xdebug

Et après cela, veuillez redémarrer le serveur:

sudo service apache2 restart
kkochanski
la source
PHP 7 a supprimé xdebug du fichier ini, je crois. Donc, cette réponse m'a aidé.
Keith Holliday
1
A travaillé pour PHP7. Le commentaire des paramètres xdebug dans le php.ini ne fonctionnait pas.
Kalob Taulien
1
Ça n'a pas marché. AVERTISSEMENT: le fichier ini du module xdebug n'existe pas sous /etc/php/7.1/mods-available
dxvargas
25

En outre, vous pouvez ajouter xdebug_disable()à votre code. Essayer:

if(function_exists('xdebug_disable')) { xdebug_disable(); }

Zack Katz
la source
32
Cela ne désactive que l'affichage des stacktraces, cela ne désactive pas réellement xdebug (fonction terriblement nommée, je sais)
BlueRaja - Danny Pflughoeft
C'est une excellente façon de gérer de nombreuses situations. Merci pour cela même si cela ne répond pas vraiment aux besoins de OP.
Jake
3
@Jake, je ne suis pas sûr que l'OP recherchait un boucher.
thephpdev le
1
@Jake hehe. Je plaisantais de toute façon. 😛
thephpdev
1
@BinarWeb parce que les gens pourraient penser que cette fonction désactive tout xdebug et améliore les performances, mais ce n'est pas le cas
Fogus
12

J'ai renommé le fichier de configuration et redémarré le serveur:

$ mv /etc/php/7.0/fpm/conf.d/20-xdebug.ini /etc/php/7.0/fpm/conf.d/20-xdebug.ini.bak

$ sudo service php7.0-fpm restart && sudo service nginx restart

Cela a fonctionné pour moi.

Sinan Eldem
la source
Cela a fonctionné pour moi, sauf dans /etc/php/7.0/cli/conf.d au lieu de /etc/php/7.0/fpm/conf.d
Sera
Cela fonctionnera également sur php 7.2,9 sur mac osx ou sur centos vagrant. Renommez simplement en xdebug.ini en xdebug.ini.old ou autre chose
vknyvz
C'est le chef
Micheal C Wallas
10

Commentez l'extension dans php.ini et redémarrez Apache. Voici un script simple (vous pouvez lui attribuer un raccourci)

xdebug-toggle.php

define('PATH_TO_PHP_INI', 'c:/xampp/php/php.ini');
define('PATH_TO_HTTPD', 'c:/xampp/apache/bin/httpd.exe');
define('REXP_EXTENSION', '(zend_extension\s*=.*?php_xdebug)');

$s = file_get_contents(PATH_TO_PHP_INI);
$replaced = preg_replace('/;' . REXP_EXTENSION . '/', '$1', $s);
$isOn = $replaced != $s;
if (!$isOn) {
    $replaced = preg_replace('/' . REXP_EXTENSION . '/', ';$1', $s);
}
echo 'xdebug is ' . ($isOn ? 'ON' : 'OFF') . " now. Restarting apache...\n\n";
file_put_contents(PATH_TO_PHP_INI, $replaced);

passthru(PATH_TO_HTTPD . ' -k restart');
Antonpinchuk
la source
Afin de vraiment désactiver complètement XDebug, celle-ci est la bonne réponse, voir mon commentaire dans la réponse de @ UdaySawant.
thesilentman
8

dans xubuntu, j'ai totalement désactivé xdebug pour la CLI avec ceci ...

sudo rm /etc/php5/cli/conf.d/*xdebug*
Artistan
la source
note: cela m'a vraiment aidé pour les mises à jour des compositeurs. nécessaire pour désactiver xdebug en cas de problèmes de performances.
Artistan
3
cela fonctionne aussi pour la ferme laravel. pour désactiver xdebug dans homestead / laravel, il suffit de commenter la section dans le fichier/etc/php5/cli/conf.d/20-xdebug.ini
ulkas
Il convient de mentionner que si vous exécutez un script php depuis un terminal qui exécute un autre script php depuis un terminal via une passthrufonction avec xdebug activé, xdebug pourrait se bloquer et arrêter l'exécution.
Gherman
1
Je ne sais pas à quoi servait le vote négatif, cela semble être le seul moyen de désactiver xdebug pour l'interface de ligne de commande et pas pour les autres environnements. Bien que j'utilise unlinkplus rmsi c'est disponible.
Andy
4
Je ne voudrais pas rm / dissocier l'ini, faire plutôt comme ulkas suggéré sudo nano /etc/php/7.0/cli/conf.d/20-xdebug.iniet le commenter.
Justin le
7

Sous Windows (WAMP) dans le fichier ini CLI:

X:\wamp\bin\php\php5.x.xx\php.ini

ligne de commentaire

; XDEBUG Extension

;zend_extension = "X:/wamp/bin/php/php5.x.xx/zend_ext/php_xdebug-xxxxxx.dll"

Apache traitera xdebug, et le compositeur ne le fera pas.

Vladimir Vukanac
la source
4

Deux options:

1: Ajoutez le code suivant dans le script d'initialisation:

 if (function_exists('xdebug_disable')) {
           xdebug_disable();
         }

2: Ajouter le drapeau suivant à php.ini

 xdebug.remote_autostart=0
 xdebug.remote_enable=0

La première option est recommandée.

Sumoanand
la source
4

Trouvez votre PHP.ini et recherchez XDebug.

normalement dans Ubuntu, son chemin est

/etc/php5/apache2/php.ini  

Apportez les modifications suivantes (mieux vaut simplement les commenter en ajoutant; au début)

xdebug.remote_autostart=0
xdebug.remote_enable=0
xdebug.profiler_enable=0

puis redémarrez votre serveur pour Ubuntu

sudo service apache2 restart
Shadab Salam
la source
4

Désactiver xdebug

Pour PHP 7: sudo nano /etc/php/7.0/cli/conf.d/20-xdebug.ini

Pour PHP 5: sudo nano /etc/php5/cli/conf.d/20-xdebug.ini

Ensuite, commentez tout et enregistrez.


UPDATE - Désactiver pour CLI uniquement

Selon le commentaire de @ igoemon, c'est une meilleure méthode:

PHP 7.0 (NGINX)

sudo mv /etc/php/7.0/cli/conf.d/20-xdebug.ini /etc/php/7.0/cli/conf.d/20-xdebug.ini.old
sudo service nginx restart

Remarque: mettez à jour le chemin de votre version de PHP.

Justin
la source
Ce n'est pas une solution, car /etc/php/7.0/cli/conf.d/20-xdebug.ini n'est qu'un lien symbolique et si vous le modifiez, vous modifiez le fichier d'origine qui est commun pour cli et non-cli. Je pense que la bonne solution est simplement de supprimer le lien symbolique.
igoemon le
Réponse mise à jour ^.
Justin
4

Ubuntu 16.04 supprime xdebug de PHP.

Trouvez votre fichier php.ini et assurez-vous que xdebug est là:

grep -r "xdebug" /etc/php/

Cela peut arriver avec différentes versions, si c'est le cas, exécutez php -vpour trouver votre version.

Modifiez le fichier php.ini, comme:

sudo vi /etc/php/5.6/mods-available/xdebug.ini

Commentez la ligne:

//zend_extension=xdebug.so

Enregistrez le fichier

Andrew Atkinson
la source
Oui, vous avez certainement besoin de la première commande pour découvrir toutes les (mauvaises) configurations xdebug que vous avez effectuées. Merci!
Aaron Liu
4

Si vous utilisez php-fpmce qui suit devrait être suffisant:

sudo phpdismod xdebug
sudo service php-fpm restart

Notez que vous devrez modifier cela en fonction de votre version de php. Par exemple, exécutez php 7.0, vous feriez:

sudo phpdismod xdebug
sudo service php7.0-fpm restart

Puisque vous utilisez php-fpm, il ne devrait pas être nécessaire de redémarrer le serveur Web actuel. Dans tous les cas, si vous n'utilisez pas fpm, vous pouvez simplement redémarrer votre serveur Web en utilisant l'une des commandes ci-dessous:

sudo service apache2 restart
sudo apache2ctl restart
Cyclonecode
la source
3

J'ai rencontré un problème similaire. Parfois, vous ne trouverez pas xdebug.so dans php.ini. Dans ce cas, exécutez phpinfo()dans un fichier php et recherchez Additional .ini files parsed. Ici, vous verrez plus de fichiers ini. L'un d'eux sera le fichier ini de xdebug. Supprimez simplement (ou renommez) ce fichier, redémarrez apache et cette extension sera supprimée.

Jerrymouse
la source
3

J'ai eu le problème suivant: même si je règle

xdebug.remote_enable=0 

Xdebug-Error-Message-Decoration a été affiché.

Ma solution:

xdebug.default_enable=0

Seulement si j'utilise ce drapeau, Xdebug a été désactivé.

Suther
la source
3

(Ceci est pour CentOS)

Renommez le fichier de configuration et redémarrez apache.

sudo mv /etc/php.d/xdebug.ini /etc/php.d/xdebug.ini.old
sudo service httpd restart

Faites l'inverse pour réactiver.

crmpicco
la source
1

Si vous utilisez MAMP Pro sur Mac OS X, cela se fait via le client MAMP en décochant Activer Xdebug sous l' onglet PHP :

Désactivation de Xdebug dans MAMP Pro

Casper André Casse
la source
1

Donc, oui, tout ce dont vous avez besoin, il suffit de commenter une ligne dans un fichier INI comme zend_extension=xdebug.soou similaire.

Les commentaires peuvent être faits en ajoutant un point-virgule.

Mais, ce genre de réponse a déjà été ajouté, et j'aimerais partager une solution prête pour changer le statut de Xdebug.

J'ai fait un switcher rapide pour Xdebug. Ce serait peut-être utile pour quelqu'un.

Xdebug Switcher

Kirby
la source
1

Pour WAMP, cliquez avec le bouton gauche de la souris sur l'icône Wamp dans la barre des tâches. Survolez PHP, puis cliquez sur php.ini et ouvrez-le dans votre éditeur de texte.

Maintenant, recherchez la phrase «zend_extension» et ajoutez; (point-virgule) devant lui.

Redémarrez le WAMP et vous êtes prêt à partir.

bantya
la source
1

Apache / 2.4.33 (Win64) PHP / 7.2.4 pile myHomeBrew

À la fin de php.ini, j'utilise ce qui suit pour gérer Xdebug à utiliser avec PhpStorm

; jch ~ Sweet analizer at https://xdebug.org/wizard.php for matching xdebug to php version.
; jch ~ When upgrading php versions check if newer xdebug.dll is needed in ext directory.
; jch Renamed... zend_extension = E:\x64Stack\PHP\php7.2.4\ext\php_xdebug-2.6.0-7.2-vc15-x86_64.dll

zend_extension = E:\x64Stack\PHP\php7.2.4\ext\php_xdebug.dll

; jch !!!! Added the following for Xdebug with PhpStorm

[Xdebug]
; zend_extension=<full_path_to_xdebug_extension>
; xdebug.remote_host=<the host where PhpStorm is running (e.g. localhost)>
; xdebug.remote_port=<the port to which Xdebug tries to connect on the host where PhpStorm is running (default 9000)>

xdebug.remote_enable=1
xdebug.remote_host=localhost
xdebug.remote_port=9000

xdebug.profiler_enable=1
xdebug.profiler_output_dir="E:\x64Stack\Xdebug_profiler_output"
xdebug.idekey=PHPSTORM
xdebug.remote_autostart=1

; jch ~~~~~~~~~To turn Xdebug off(disable) uncomment the following 3 lines restart Apache~~~~~~~~~ 
;xdebug.remote_autostart=0  
;xdebug.remote_enable=0
;xdebug.profiler_enable=0

; !!! Might get a little more speed by also commenting out this line above... 
;;; zend_extension = E:\x64Stack\PHP\php7.2.4\ext\php_xdebug.dll
; so that Xdebug is both disabled AND not loaded
Jim
la source
1

Inspiré de PHPStorm, faites un clic droit sur un fichier -> déboguer -> ...

www-data@3bd1617787db:~/symfony$ 
php 
-dxdebug.remote_enable=0 
-dxdebug.remote_autostart=0 
-dxdebug.default_enable=0 
-dxdebug.profiler_enable=0 
test.php

le truc important est -dxdebug.remote_enable=0 -dxdebug.default_enable=0

max4ever
la source
1

J'ai créé ce script bash pour basculer xdebug. Je pense que cela devrait fonctionner au moins sur Ubuntu / Debian. Ceci est pour PHP7 +. Pour PHP5, utilisez php5dismod / php5enmod.

#!/bin/bash

#
# Toggles xdebug
#

if [ ! -z $(php -m | grep "xdebug") ] ; then
    phpdismod xdebug
    echo "xdebug is now disabled"
else
    phpenmod xdebug
    echo "xdebug is now enabled"
fi

# exit success
exit 0
Firze
la source
1

Désactivez xdebug uniquement pour certaines versions de PHP ou sapi. Dans ce cas PHP 7.2 fpm

sudo phpdismod -v 7.2 -s fpm xdebug
sudo service php7.2-fpm nginx restart
alvaro.canepa
la source