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.

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?


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

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

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(); }


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.


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');

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*

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.


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.


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

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.


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


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

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.


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é.


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.


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


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


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.


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

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


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

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
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.