Como desativar o XDebug

124

Acho que meu servidor ficou lento desde que instalei o XDebug. Então, para testar minha hipótese, quero desativar o XDebug completamente. Estive procurando por tutoriais sobre como fazer isso, mas não consigo encontrar essas informações.

Beto Aveiga
fonte

Respostas:

163

Encontre o seu php.inie procure o XDebug.

Defina xdebug autostart como false

xdebug.remote_autostart=0  
xdebug.remote_enable=0

Desative seu criador de perfil

xdebug.profiler_enable=0

Observe que pode haver uma perda de desempenho mesmo com o xdebug desativado, mas carregado . Para desativar o carregamento da extensão em si, você precisa comentá-la no seu php.ini. Encontre uma entrada parecida com esta:

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

e coloque um ;para comentar, por exemplo ;zend_extension = ….

Confira este post no XDebug, como desativar a depuração remota para um único arquivo .php?

Uday Sawant
fonte
Obrigado! Descobri que meu problema era APC, minha memória estava aparentemente baixa. Você está certo, o xdebug faz parte do PHP, não um módulo do Apache. Agora tudo está indo bem.
Beto Aveiga 6/01/12
1
@ Dia e se eu não conseguir encontrar nada disso no meu php.ini. Eu verifiquei em todos os lugares dentro do / etc / php, inclusive com a pesquisa grep.
Haralan Dobrev 15/03
@HaralanDobrev Verifique phpinfo () para ver se o xdebug está realmente ativado. se for, verifique se há algum arquivo ini adicional anexado ao arquivo php.ini. Além disso, verifique se você está editando o arquivo ini correto. é possível ter esses arquivos em vários locais.
Uday Sawant
18
@UdaySawant eu era capaz de desativá-lo depois de comentar a linha zend_extension=/usr/lib/php5/20090626+lfs/xdebug.sode /etc/php5/conf.d/xdebug.ini. No entanto, nem nas /usr/lib/php5nem nas /etclinhas especificadas na resposta estão disponíveis.
Haralan Dobrev 15/03
5
Na verdade, é melhor não carregar a extensão e carregá-la, se necessário. O XDebug realmente atrasa bastante as coisas, mesmo se desativado. Pode-se não sentir que o desempenho tenha degradado tanto, ao depurar / criar um perfil de alguns scripts que criam uma página da web, mas com scripts daemon, isso mostra muito. Eu escrevi um post sobre por que não colocá-lo em tudo, é melhor, aqui: bit.ly/14SaWpp
thesilentman
99

Uma solução fácil trabalhando em distribuições Linux semelhantes ao Ubuntu

sudo php5dismod xdebug
sudo service apache2 restart
Arvi Võime
fonte
10
Você poderia elaborar mais sua resposta adicionando um pouco mais de descrição sobre a solução que você fornece?
Abarisone
3
Esse comando é para o ubuntu e não para o centOS. Deve fornecer essa explicação, porque você não é a única pessoa que usa a mesma distribuição Linux.
MaXi32 8/08/15
1
isto é para apache2 e não para CLI. Estes podem ter arquivos php.ini diferentes
Adib Aroui
6
Dependendo da sua versão PHP, você deve digitar:$ sudo phpdismod xdebug
RousseauAlexandre
2
Esta resposta se aplica apenas ao PHP quando está sendo usado com o mod-php do Apache.
John Hunt
35

Na distribuição Linux Ubuntu ( talvez também outra - não foi testada ) com o PHP 5 a bordo, você pode usar:

sudo php5dismod xdebug

E com o PHP 7

sudo phpdismod xdebug

E depois disso, reinicie o servidor:

sudo service apache2 restart
kkochanski
fonte
O PHP 7 removeu o xdebug do arquivo ini, acredito. Então essa resposta me ajudou.
Keith Holliday
1
Trabalhou para PHP7. Comentar as configurações do xdebug no php.ini não funcionou.
Kalob Taulien
1
Não funcionou. AVISO: arquivo ini Módulo xdebug não existe no /etc/php/7.1/mods-available
dxvargas
25

Além disso, você pode adicionar xdebug_disable()ao seu código. Experimentar:

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

Zack Katz
fonte
32
Isso só desabilita a exibição stacktraces, ele realmente não desativar xdebug (terrivelmente nomeado função, eu sei)
BlueRaja - Danny Pflughoeft
Essa é uma maneira incrível de lidar com muitas situações. Obrigado por isso, mesmo que não atenda às necessidades do OP.
Jake
3
@ Jake, não tenho certeza se o OP estava procurando um açougueiro.
thephpdev
1
@Jake hehe. Só estava brincando de qualquer maneira. The
thephpdev 14/09/16
1
@BinarWeb porque as pessoas acham que essa função desativa todo o xdebug e melhora o desempenho, mas não é
Fogus 19/03
12

Renomeei o arquivo de configuração e reiniciei o 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

Funcionou para mim.

Sinan Eldem
fonte
Isso funcionou para mim, exceto no /etc/php/7.0/cli/conf.d em vez de no /etc/php/7.0/fpm/conf.d
Será
Isso também funcionará no php 7.2,9 no mac osx ou no centos vagrant. Apenas renomear a xdebug.ini para xdebug.ini.old ou qualquer outra coisa
vknyvz
Este é o chefe
Micheal C Wallas
10

Comente a extensão no php.ini e reinicie o Apache. Aqui está um script simples (você pode atribuir um atalho a ele)

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
fonte
Para realmente desabilitar completamente o XDebug, esta é a resposta correta, veja meu comentário na resposta do @ UdaySawant.
Thesilentman
8

no xubuntu eu desabilitei totalmente o xdebug para a CLI com isso ...

sudo rm /etc/php5/cli/conf.d/*xdebug*
Artistan
fonte
nota: isso realmente me ajudou nas atualizações do compositor. necessário desativar o xdebug por problemas de desempenho.
Artistan
3
isso funciona também para laravel homestead. Para desativar xdebug em Homestead / laravel simplesmente comente a seção no arquivo/etc/php5/cli/conf.d/20-xdebug.ini
ulkas
Vale mencionar que se você executar o script php do terminal que executa outro script php do terminal via passthrufunção com o xdebug ativado, o xdebug pode travar e interromper a execução.
Gherman
1
Não sei para que serve o voto negativo, esta parece ser a única maneira de desativar o xdebug para a CLI e não para outros ambientes. Embora eu usaria unlinkmais rmse estiver disponível.
Andy
4
Eu não iria rm / desvincular o ini, ao invés disso, como ulkas sugeria, sudo nano /etc/php/7.0/cli/conf.d/20-xdebug.inie comentar.
Justin
7

No Windows (WAMP) no arquivo CLI ini:

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

linha de comentário

; XDEBUG Extension

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

O Apache processará xdebuge o compositor não.

Vladimir Vukanac
fonte
4

Duas opções:

1: Adicione o seguinte código no script de inicialização:

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

2: Adicione o seguinte sinalizador ao php.ini

 xdebug.remote_autostart=0
 xdebug.remote_enable=0

A primeira opção é recomendada.

Sumoanand
fonte
4

Encontre o seu PHP.ini e procure o XDebug.

normalmente no Ubuntu seu caminho é

/etc/php5/apache2/php.ini  

Faça as seguintes alterações (é melhor apenas comentá-las adicionando; no início)

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

depois reinicie o servidor novamente para o Ubuntu

sudo service apache2 restart
Shadab Salam
fonte
4

Desativar xdebug

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

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

Em seguida, comente tudo e salve.


UPDATE - Desativar apenas para CLI

De acordo com o comentário do @ igoemon, este é um método melhor:

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: Atualize o caminho para sua versão do PHP.

Justin
fonte
Não é uma solução, porque /etc/php/7.0/cli/conf.d/20-xdebug.ini é apenas um link simbólico e, se você o editar, edita o arquivo original que é comum para cli e não-cli. Eu acho que a solução certa é simples excluir o link simbólico.
igoemon 3/09/16
Resposta atualizada ^.
Justin
4

O Ubuntu 16.04 remove o xdebug do PHP.

Encontre o seu arquivo php.ini e verifique se o xdebug está lá:

grep -r "xdebug" /etc/php/

Isso pode resultar em versões diferentes, se for o caso, execute php -vpara encontrar sua versão.

Edite o arquivo php.ini, como:

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

Comente a linha:

//zend_extension=xdebug.so

Salve o arquivo

Andrew Atkinson
fonte
Sim, você definitivamente precisa do primeiro comando para descobrir todas as configurações xdebug (erradas) que você fez. Obrigado!
Aaron Liu
4

Se você estiver usando, php-fpmo seguinte deve ser suficiente:

sudo phpdismod xdebug
sudo service php-fpm restart

Observe que você precisará ajustar isso dependendo da sua versão php. Por exemplo, executando o php 7.0, você faria:

sudo phpdismod xdebug
sudo service php7.0-fpm restart

Como você está executando o php-fpm, não há necessidade de reiniciar o servidor da web real. De qualquer forma, se você não usar o fpm, poderá simplesmente reiniciar o servidor da web usando qualquer um dos comandos abaixo:

sudo service apache2 restart
sudo apache2ctl restart
Cyclonecode
fonte
3

Encontrei um problema semelhante. Às vezes, você não encontra o xdebug.so no php.ini. Nesse caso, execute phpinfo()em um arquivo php e verifique Additional .ini files parsed. Aqui você verá mais arquivos ini. Um deles será o arquivo ini do xdebug. Apenas remova (ou renomeie) esse arquivo, reinicie o apache e essa extensão será removida.

jerrymouse
fonte
3

Eu tive o seguinte problema: mesmo se eu definir

xdebug.remote_enable=0 

Xdebug-Error-Message-Decoration foi mostrado.

Minha solução:

xdebug.default_enable=0

Somente se eu usar esse sinalizador, o Xdebug foi desativado.

suther
fonte
3

(Isto é para o CentOS)

Renomeie o arquivo de configuração e reinicie o apache.

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

Faça o inverso para reativar.

crmpicco
fonte
1

Se você estiver usando o MAMP Pro no Mac OS X, isso será feito através do cliente MAMP desmarcando Ativar Xdebug na guia PHP :

Desabilitando o Xdebug no MAMP Pro

Casper André Casse
fonte
1

Então, sim, tudo o que você precisa, apenas linha de comentário no arquivo INI, semelhante zend_extension=xdebug.soou semelhante.

Os comentários podem ser feitos adicionando ponto e vírgula.

Mas, esse tipo de resposta já foi adicionado e eu gostaria de compartilhar uma solução pronta para mudar o status do Xdebug.

Eu fiz o switcher rápido para o Xdebug. Talvez seja útil para alguém.

Xdebug Switcher

Kirby
fonte
1

Para o WAMP, clique com o botão esquerdo do mouse no ícone Wamp na bandeja da barra de tarefas. Passe o mouse sobre o PHP e clique em php.ini e abra-o no seu editor de texto.

Agora, procure a frase 'zend_extension' e adicione; (ponto e vírgula) na frente dele.

Reinicie o WAMP e você está pronto para ir.

bantya
fonte
1

Apache / 2.4.33 (Win64) PHP / 7.2.4 pilha myHomeBrew

No final do php.ini, uso o seguinte para gerenciar o Xdebug para uso com o 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
fonte
1

Inspirado pelo PHPStorm, clique com o botão direito do mouse em um arquivo -> depurar -> ...

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

o material importante é -dxdebug.remote_enable=0 -dxdebug.default_enable=0

max4ever
fonte
1

Eu criei este script bash para alternar o xdebug. Eu acho que deveria funcionar pelo menos no Ubuntu / Debian. Isto é 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
fonte
1

Desative o xdebug apenas para determinadas versões do PHP ou sapi. Nesse caso, PHP 7.2 fpm

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