Cómo deshabilitar XDebug


124

Creo que mi servidor se volvió lento desde que instalé XDebug. Entonces, para probar mi hipótesis, quiero deshabilitar XDebug por completo. He estado buscando tutoriales sobre cómo hacer esto, pero no puedo encontrar esa información.

Respuestas:


163

Encuentra tu php.iniy busca XDebug.

Establezca xdebug autostart en false

xdebug.remote_autostart=0  
xdebug.remote_enable=0

Desactiva tu perfilador

xdebug.profiler_enable=0

Tenga en cuenta que puede haber una pérdida de rendimiento incluso con xdebug deshabilitado pero cargado . Para deshabilitar la carga de la extensión en sí, debe comentarla en su php.ini. Encuentre una entrada como esta:

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

y poner un ;comentario, por ejemplo ;zend_extension = ….

Echa un vistazo a esta publicación XDebug, ¿cómo deshabilitar la depuración remota para un solo archivo .php?


¡Gracias! Descubrí que mi problema era APC, mi memoria aparentemente era baja. Tienes razón, xdebug es parte de PHP, no un módulo de Apache. Ahora todo está funcionando bien.
Beto Aveiga

1
@Uday y qué pasa si no puedo encontrar nada de esto en mi php.ini. Lo he comprobado en todas partes dentro de / etc / php, incluida la búsqueda grep.
Haralan Dobrev

@HaralanDobrev Compruebe phpinfo () para ver si xdebug está realmente habilitado. si es así, verifique si tiene archivos ini adicionales adjuntos al archivo php.ini. Además, asegúrese de que está editando el archivo INI correcto. Es posible tener estos archivos en varias ubicaciones.
Uday Sawant

18
@UdaySawant Pude desactivarlo después de comentar la línea zend_extension=/usr/lib/php5/20090626+lfs/xdebug.sodesde /etc/php5/conf.d/xdebug.ini. Sin embargo, ni en /usr/lib/php5ni en /etclas líneas especificadas en la respuesta están disponibles.
Haralan Dobrev

55
En realidad, es mejor no cargar la extensión en absoluto, y solo cargarla, si es necesario. XDebug en realidad ralentiza mucho las cosas, incluso si está deshabilitado. Uno podría no sentir que el rendimiento se ha degradado tanto, al depurar / perfilar algunos scripts que crean una página web, pero con scripts de daemon, muestra mucho. Acabo de escribir una publicación de blog sobre por qué no cargarlo, es mejor, aquí: bit.ly/14SaWpp
thesilentman

99

Una solución fácil que funciona en distribuciones de Linux similares a Ubuntu

sudo php5dismod xdebug
sudo service apache2 restart

10
¿Podría por favor elaborar más su respuesta agregando un poco más de descripción sobre la solución que proporciona?
abarisone

3
Ese comando es para ubuntu no centOS. Debería proporcionar esa explicación porque no eres la única persona que usa la misma distribución de Linux.
MaXi32

1
esto es para apache2 y no para CLI. Estos pueden tener diferentes archivos php.ini
Adib Aroui

66
Dependiendo de su versión de PHP, debe ingresar$ sudo phpdismod xdebug
RousseauAlexandre

2
Esta respuesta solo se aplica a PHP cuando se usa con el mod-php de Apache.
John Hunt

35

En la distribución Linux Ubuntu ( quizás también otra, no está probada ) con PHP 5 a bordo, puede usar:

sudo php5dismod xdebug

Y con PHP 7

sudo phpdismod xdebug

Y después de eso, reinicie el servidor:

sudo service apache2 restart

PHP 7 eliminó xdebug del archivo ini, creo. Entonces esta respuesta me ayudó.
Keith Holliday

1
Trabajó para PHP7. Comentar la configuración de xdebug en php.ini no funcionó.
Kalob Taulien

1
No funciono ADVERTENCIA: El archivo ini de xdebug del módulo no existe en
/etc/php/7.1/mods-available

25

Además, puede agregar xdebug_disable()a su código. Tratar:

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


32
Esto solo deshabilita la visualización de los stacktraces, en realidad no deshabilita xdebug (función terriblemente nombrada, lo sé)
BlueRaja - Danny Pflughoeft

Esta es una forma increíble de lidiar con muchas situaciones. Gracias por esto, incluso si realmente no es necesario para la carne.
Jake el

3
@Jake, no estoy seguro de que el OP estuviera buscando un carnicero.
thephpdev

1
@Jake jeje. Solo bromeaba de todos modos. 😛
thephpdev

1
@BinarWeb porque la gente podría pensar que esta función deshabilita todo el xdebug y mejora el rendimiento, pero no lo es
Fogus

12

Cambié el nombre del archivo de configuración y reinicié el servidor:

$ 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

A mí me funcionó.


Esto funcionó para mí, excepto en /etc/php/7.0/cli/conf.d en lugar de /etc/php/7.0/fpm/conf.d
Será

Esto también funcionará en php 7.2,9 en mac osx o en centos vagrant. Simplemente cambie el nombre de xdebug.ini a xdebug.ini.old o algo más
vknyvz

Este es su jefe
Micheal C Wallas

10

Comente la extensión en php.ini y reinicie Apache. Aquí hay un script simple (puede asignarle un acceso directo)

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

Para deshabilitar completamente XDebug por completo, esta es la respuesta correcta, vea mi comentario en la respuesta de @ UdaySawant.
thesilentman

8

en xubuntu deshabilité totalmente xdebug para la CLI con esto ...

sudo rm /etc/php5/cli/conf.d/*xdebug*

nota: esto realmente me ayudó para las actualizaciones del compositor. necesario para deshabilitar xdebug por problemas de rendimiento.
Artistan

3
esto también funciona para laravel homestead. para deshabilitar xdebug en homestead / laravel simplemente comente la sección en el archivo/etc/php5/cli/conf.d/20-xdebug.ini
ulkas

Vale la pena mencionar que si ejecuta un script php desde la terminal que ejecuta otro script php desde la terminal a través de la passthrufunción con xdebug habilitado, xdebug podría bloquearse y detener la ejecución.
Gherman

1
No estoy seguro de para qué fue el voto negativo, esta parece ser la única forma de deshabilitar xdebug para la CLI y no para otros entornos. Aunque usaría unlinkmás rmsi está disponible.
Andy

44
No diría / desvincularía el ini, sino que haría lo que sugirió ulkas, sudo nano /etc/php/7.0/cli/conf.d/20-xdebug.iniy lo comentaría.
Justin

7

En Windows (WAMP) en el archivo CLI ini:

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

línea de comentarios

; XDEBUG Extension

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

Apache procesará xdebugy el compositor no.


4

Dos opciones:

1: Agregue el siguiente código en la secuencia de comandos de inicialización:

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

2: Agregar el siguiente indicador a php.ini

 xdebug.remote_autostart=0
 xdebug.remote_enable=0

Se recomienda la primera opción.


4

Encuentra tu PHP.ini y busca XDebug.

normalmente en Ubuntu su camino es

/etc/php5/apache2/php.ini  

Realice los siguientes cambios (es mejor solo comentarlos agregando; al principio)

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

luego reinicie su servidor nuevamente para Ubuntu

sudo service apache2 restart

4

Deshabilitar xdebug

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

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

Luego comenta todo y ahorra.


ACTUALIZACIÓN: deshabilitar solo para CLI

Según el comentario de @ igoemon, este es un mejor método:

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

Nota: Actualice la ruta a su versión de PHP.


Is no es una solución, porque /etc/php/7.0/cli/conf.d/20-xdebug.ini es solo un enlace simbólico y si lo edita, edita el archivo original que es común para cli y no cli. Creo que la solución correcta es simplemente eliminar el enlace simbólico.
igoemon

Respuesta actualizada ^.
Justin

4

Ubuntu 16.04 eliminar xdebug de PHP.

Encuentre su archivo php.ini y asegúrese de que xdebug esté allí:

grep -r "xdebug" /etc/php/

Esto puede venir con diferentes versiones, si es así, ejecute php -vpara encontrar su versión.

Edite el archivo php.ini, como:

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

Comenta la línea:

//zend_extension=xdebug.so

Guarda el archivo


Sí, definitivamente necesita el primer comando para descubrir todas las configuraciones xdebug (incorrectas) que hizo. ¡Gracias!
Aaron Liu

4

Si está utilizando php-fpmlo siguiente debería ser suficiente:

sudo phpdismod xdebug
sudo service php-fpm restart

Tenga en cuenta que deberá ajustar esto dependiendo de su versión de php. Por ejemplo, ejecutar php 7.0 haría:

sudo phpdismod xdebug
sudo service php7.0-fpm restart

Como está ejecutando php-fpm, no debería ser necesario reiniciar el servidor web real. En cualquier caso, si no utiliza fpm, simplemente puede reiniciar su servidor web utilizando cualquiera de los siguientes comandos:

sudo service apache2 restart
sudo apache2ctl restart

3

Me encontré con un problema similar. A veces, no encontrarás xdebug.so en php.ini. En cuyo caso, ejecutar phpinfo()en un archivo php y verificar Additional .ini files parsed. Aquí verás más archivos ini. Uno de ellos será el archivo ini de xdebug. Simplemente elimine (o cambie el nombre) de este archivo, reinicie apache y se eliminará esta extensión.


3

Tuve el siguiente problema: incluso si configuro

xdebug.remote_enable=0 

Se mostró Xdebug-Error-Message-Decoration.

Mi solución:

xdebug.default_enable=0

Solo si uso este indicador, Xdebug estaba deshabilitado.


3

(Esto es para CentOS)

Cambie el nombre del archivo de configuración y reinicie apache.

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

Haga lo contrario para volver a habilitar.


1

Si está utilizando MAMP Pro en Mac OS X, se realiza a través del cliente MAMP desmarcando Activar Xdebug en la pestaña PHP :

Deshabilitar Xdebug en MAMP Pro


1

Entonces, sí, todo lo que necesita, solo comente una línea en el archivo INI como zend_extension=xdebug.soo similar.

Los comentarios pueden hacerse agregando punto y coma.

Pero, ese tipo de respuesta ya se agregó, y me gustaría compartir una solución lista para cambiar el estado de Xdebug.

He hecho un cambio rápido para Xdebug. Tal vez sería útil para alguien.

Xdebug Switcher


1

Para WAMP, haga clic con el botón izquierdo en el icono de Wamp en la bandeja de la barra de tareas. Pase el mouse sobre PHP y luego haga clic en php.ini y ábralo en su editor de texto.

Ahora, busque la frase 'zend_extension' y agregue; (punto y coma) delante.

Reinicia el WAMP y listo.


1

Apache / 2.4.33 (Win64) PHP / 7.2.4 pila myHomeBrew

Al final de php.ini utilizo lo siguiente para administrar Xdebug para usar con 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

Inspirado por PHPStorm, haga clic derecho en un archivo -> depurar -> ...

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

lo importante es -dxdebug.remote_enable=0 -dxdebug.default_enable=0


1

Creé este script bash para alternar xdebug. Creo que debería funcionar al menos en Ubuntu / Debian. Esto es para PHP7 +. Para PHP5 use 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

Deshabilite xdebug solo para ciertas versiones de PHP o sapi. En este caso PHP 7.2 fpm

sudo phpdismod -v 7.2 -s fpm xdebug
sudo service php7.2-fpm nginx restart
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.