Come disabilitare XDebug


124

Penso che il mio server sia diventato lento da quando ho installato XDebug. Quindi, per testare la mia ipotesi, voglio disabilitare completamente XDebug. Ho cercato tutorial su come farlo ma non riesco a trovare tali informazioni.

Risposte:


163

Trova il tuo php.inie cerca XDebug.

Imposta xdebug autostart su false

xdebug.remote_autostart=0  
xdebug.remote_enable=0

Disabilita il tuo profiler

xdebug.profiler_enable=0

Nota che ci può essere una perdita di prestazioni anche con xdebug disabilitato ma caricato . Per disabilitare il caricamento dell'estensione stessa, devi commentarla nel tuo php.ini. Trova una voce simile a questa:

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

e metti un ;per commentarlo, ad es ;zend_extension = ….

Dai un'occhiata a questo post XDebug, come disabilitare il debug remoto per un singolo file .php?


Grazie! Ho scoperto che il mio problema era APC, la mia memoria era apparentemente bassa. Hai ragione, xdebug fa parte di PHP, non un modulo di Apache. Ora sta andando tutto bene.
Beto Aveiga

1
@Uday e se non riesco a trovare niente di tutto questo nel mio php.ini. Ho controllato ovunque all'interno di / etc / php, inclusa la ricerca grep.
Haralan Dobrev

@HaralanDobrev Controlla phpinfo () per vedere se xdebug è effettivamente abilitato. se lo è, controlla se hai file ini aggiuntivi allegati al file php.ini. Inoltre assicurati di modificare il file ini corretto. è possibile avere questi file in più posizioni.
Uday Sawant

18
@UdaySawant Sono stato in grado di disabilitarlo dopo aver commentato la riga zend_extension=/usr/lib/php5/20090626+lfs/xdebug.soda /etc/php5/conf.d/xdebug.ini. Tuttavia né nelle righe /usr/lib/php5né nelle /etcrighe specificate nella risposta sono disponibili.
Haralan Dobrev

5
In realtà, è meglio non caricare affatto l'estensione e caricarla solo se necessario. XDebug in realtà rallenta molto le cose, anche se disabilitato. Si potrebbe non ritenere che le prestazioni siano diminuite così tanto, durante il debug / profiling di alcuni script che creano una pagina web, ma con gli script daemon, mostra molto. Ho appena scritto un post sul blog sul perché non caricarlo affatto, è meglio, qui: bit.ly/14SaWpp
thesilentman

99

Una soluzione semplice che funziona su distribuzioni Linux simili a Ubuntu

sudo php5dismod xdebug
sudo service apache2 restart

10
Potresti elaborare di più la tua risposta aggiungendo un po 'più di descrizione sulla soluzione che fornisci?
abarisone

3
Quel comando è per Ubuntu, non per CentOS. Dovresti fornire questa spiegazione perché non sei l'unica persona che usa la stessa distribuzione Linux.
MaXi32

1
questo è per apache2 e non per CLI. Questi potrebbero avere file php.ini diversi
Adib Aroui

6
A seconda della tua versione PHP, dovresti inserire$ sudo phpdismod xdebug
RousseauAlexandre

2
Questa risposta si applica solo a PHP quando viene utilizzato con mod-php di Apache.
John Hunt

35

Nella distribuzione Linux Ubuntu ( forse anche un'altra - non è testata ) con PHP 5 a bordo, puoi usare:

sudo php5dismod xdebug

E con PHP 7

sudo phpdismod xdebug

Dopodiché, riavvia il server:

sudo service apache2 restart

PHP 7 ha rimosso xdebug dal file ini, credo. Quindi questa risposta mi ha aiutato.
Keith Holliday,

1
Ha funzionato per PHP7. Commentare le impostazioni di xdebug nel php.ini non ha funzionato.
Kalob Taulien

1
Non ha funzionato. ATTENZIONE: il file ini xdebug del modulo non esiste in /etc/php/7.1/mods-available
dxvargas

25

Inoltre, puoi aggiungere xdebug_disable()al tuo codice. Provare:

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


32
Questo disabilita solo la visualizzazione degli stacktrace, in realtà non disabilita xdebug (funzione dal nome terribile, lo so)
BlueRaja - Danny Pflughoeft

Questo è un modo fantastico per affrontare molte situazioni. Grazie per questo anche se non soddisfa le esigenze di OP.
Jake

3
@ Jake, non sono sicuro che l'OP stesse cercando un macellaio.
thephpdev

1
@ Jake hehe. Comunque stavo solo scherzando. 😛
thephpdev

1
@BinarWeb perché le persone potrebbero pensare che questa funzione disabiliti l'intero xdebug e migliori le prestazioni, ma non lo è
Fogus

12

Ho rinominato il file di configurazione e riavviato il server:

$ 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

Ha funzionato per me.


Questo ha funzionato per me, tranne in /etc/php/7.0/cli/conf.d invece di /etc/php/7.0/fpm/conf.d
Will

Funzionerà anche su php 7.2,9 su mac osx o su centos vagrant. Basta rinominare in xdebug.ini in xdebug.ini.old o qualcos'altro
vknyvz

Questo è il capo
Micheal C Wallas il

10

Commenta l'estensione in php.ini e riavvia Apache. Ecco un semplice script (puoi assegnare un collegamento ad esso)

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

Per disabilitare completamente XDebug, questa è la risposta corretta, vedi il mio commento nella risposta di @ UdaySawant.
thesilentman

8

in xubuntu ho completamente disabilitato xdebug per la CLI con questo ...

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

nota: questo mi ha davvero aiutato per gli aggiornamenti del compositore. necessario per disabilitare xdebug per problemi di prestazioni.
Artistan

3
questo funziona anche per la fattoria di Laravel. per disabilitare xdebug in homestead / laravel è sufficiente commentare la sezione nel file/etc/php5/cli/conf.d/20-xdebug.ini
ulkas

Vale la pena menzionare se si esegue uno script php dal terminale che esegue un altro script php dal terminale tramite la passthrufunzione con xdebug abilitato, xdebug potrebbe bloccarsi e interrompere l'esecuzione.
Gherman

1
Non sono sicuro a cosa servisse il downvote, questo sembra essere l'unico modo per disabilitare xdebug per la CLI e non per altri ambienti. Anche se io userei unlinksopra rmse è disponibile.
Andy

4
Non rm / scollegherei l'ini, invece farei come suggerito da ulkas sudo nano /etc/php/7.0/cli/conf.d/20-xdebug.inie commentarlo.
Justin

7

Su Windows (WAMP) nel file ini della CLI:

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

riga di commento

; XDEBUG Extension

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

Apache elaborerà xdebuge il compositore no.


4

Due opzioni:

1: aggiungi il seguente codice nello script di inizializzazione:

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

2: Aggiungi il seguente flag a php.ini

 xdebug.remote_autostart=0
 xdebug.remote_enable=0

Si consiglia la prima opzione.


4

Trova il tuo PHP.ini e cerca XDebug.

normalmente in Ubuntu il suo percorso è

/etc/php5/apache2/php.ini  

Apporta le seguenti modifiche (meglio commentarle semplicemente aggiungendo; all'inizio)

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

quindi riavvia nuovamente il server per Ubuntu

sudo service apache2 restart

4

Disabilita xdebug

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

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

Quindi commenta tutto e salva.


AGGIORNAMENTO - Disabilita solo per CLI

Secondo il commento di @ igoemon, questo è un metodo migliore:

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: aggiorna il percorso alla tua versione di PHP.


Non è una soluzione, perché /etc/php/7.0/cli/conf.d/20-xdebug.ini è solo un collegamento simbolico e se lo modifichi, modifichi il file originale che è comune per cli e non cli. Penso che la soluzione giusta sia semplicemente eliminare il collegamento simbolico.
igoemon

Risposta aggiornata ^.
Justin

4

Ubuntu 16.04 rimuove xdebug da PHP.

Trova il tuo file php.ini e assicurati che xdebug sia presente:

grep -r "xdebug" /etc/php/

Questo potrebbe produrre versioni diverse, in tal caso corri php -vper trovare la tua versione.

Modifica il file php.ini, come:

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

Commenta la linea:

//zend_extension=xdebug.so

Salva il file


Sì, hai sicuramente bisogno del primo comando per scoprire tutte le configurazioni xdebug (sbagliate) che hai fatto. Grazie!
Aaron Liu

4

Se stai usando php-fpmquanto segue dovrebbe essere sufficiente:

sudo phpdismod xdebug
sudo service php-fpm restart

Nota che dovrai modificarlo a seconda della tua versione di php. Ad esempio eseguendo php 7.0 faresti:

sudo phpdismod xdebug
sudo service php7.0-fpm restart

Dato che stai eseguendo php-fpm, non dovrebbe essere necessario riavviare il server web effettivo. In ogni caso, se non usi fpm, potresti semplicemente riavviare il tuo server web usando uno dei seguenti comandi:

sudo service apache2 restart
sudo apache2ctl restart

3

Ho riscontrato un problema simile. A volte, non troverai xdebug.so in php.ini. In tal caso, esegui phpinfo()in un file php e controlla Additional .ini files parsed. Qui vedrai più file ini. Uno di questi sarà il file ini di xdebug. Basta rimuovere (o rinominare) questo file, riavviare Apache e questa estensione verrà rimossa.


3

Ho avuto il seguente problema: anche se ho impostato

xdebug.remote_enable=0 

Xdebug-Error-Message-Decoration è stato mostrato.

La mia soluzione:

xdebug.default_enable=0

Solo se uso questo flag, Xdebug è stato disabilitato.


3

(Questo è per CentOS)

Rinomina il file di configurazione e riavvia apache.

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

Fai il contrario per riattivare.


1

Se stai usando MAMP Pro su Mac OS X, è fatto tramite il client MAMP deselezionando Attiva Xdebug nella scheda PHP :

Disattivazione di Xdebug in MAMP Pro


1

Quindi, sì, tutto ciò di cui hai bisogno, solo una riga di commento in un file INI simile zend_extension=xdebug.soo simile.

È possibile creare commenti aggiungendo punto e virgola.

Ma questo tipo di risposta è già stato aggiunto e mi piacerebbe condividere la soluzione pronta per cambiare lo stato di Xdebug.

Ho creato un commutatore rapido per Xdebug. Forse sarebbe utile per qualcuno.

Xdebug Switcher


1

Per WAMP, fare clic con il pulsante sinistro del mouse sull'icona Wamp nella barra delle applicazioni della barra delle applicazioni. Passa il mouse su PHP, quindi fai clic su php.ini e aprilo nel tuo editor di testo.

Ora cerca la frase "zend_extension" e aggiungi; (punto e virgola) davanti.

Riavvia il WAMP e sei a posto.


1

Stack Apache / 2.4.33 (Win64) PHP / 7.2.4 myHomeBrew

Alla fine di php.ini utilizzo quanto segue per gestire Xdebug da utilizzare 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

Ispirato da PHPStorm, fai clic con il pulsante destro del mouse su un file -> debug -> ...

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

la cosa importante è -dxdebug.remote_enable=0 -dxdebug.default_enable=0


1

Ho creato questo script bash per attivare xdebug. Penso che dovrebbe funzionare almeno su Ubuntu / Debian. Questo è per PHP7 +. Per PHP5 usa 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

Disabilita xdebug solo per alcune versioni di PHP o sapi. In questo caso PHP 7.2 fpm

sudo phpdismod -v 7.2 -s fpm xdebug
sudo service php7.2-fpm nginx restart
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.