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.

Beto Aveiga
fuente

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?

Uday Sawant
fuente
¡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
Arvi Võime
fuente
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
kkochanski
fuente
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(); }

Zack Katz
fuente
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ó.

Sinan Eldem
fuente
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');
antonpinchuk
fuente
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*
Artistan
fuente
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.

Vladimir Vukanac
fuente
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.

Sumoanand
fuente
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
Shadab Salam
fuente
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.

Justin
fuente
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

Andrew Atkinson
fuente
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
Código ciclónico
fuente
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.

jerrymouse
fuente
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.

suther
fuente
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.

crmpicco
fuente
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

Casper André Casse
fuente
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

Kirby
fuente
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.

bantya
fuente
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
Jim
fuente
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

max4ever
fuente
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
Firze
fuente
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
alvaro.canepa
fuente