XDebug nasıl devre dışı bırakılır


124

XDebug'u kurduğumdan beri sunucumun yavaşladığını düşünüyorum. Bu yüzden, hipotezimi test etmek için XDebug'ı tamamen devre dışı bırakmak istiyorum. Bunun nasıl yapılacağına dair öğreticiler arıyordum ama böyle bir bilgi bulamıyorum.

Yanıtlar:


163

Kendinizi bulun php.inive XDebug'ı arayın.

Xdebug autostart'ı false olarak ayarlayın

xdebug.remote_autostart=0  
xdebug.remote_enable=0

Profilcinizi devre dışı bırakın

xdebug.profiler_enable=0

Xdebug devre dışı bırakılmış ancak yüklenmiş olsa bile bir performans kaybı olabileceğini unutmayın . Uzantının kendisinin yüklenmesini devre dışı bırakmak için, php.ini'nizde yorum yapmanız gerekir. Buna benzer bir giriş bulun:

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

ve ;yorum yapmak için bir koyun , örneğin ;zend_extension = ….

Bu XDebug yazısına göz atın , tek .php dosyası için uzaktan hata ayıklama nasıl devre dışı bırakılır?


Teşekkürler! Sorunumun APC olduğunu buldum, görünüşe göre hafızam düşüktü. Haklısın, xdebug PHP'nin bir parçası, Apache'nin bir modülü değil. Şimdi her şey yolunda gidiyor.
Beto Aveiga

1
@Uday ve bunların hiçbirini php.ini'mde bulamazsam ne olur? Grep araması dahil / etc / php içinde her yeri kontrol ettim.
Haralan Dobrev

@HaralanDobrev xdebug'ın gerçekten etkin olup olmadığını görmek için phpinfo () 'yu kontrol edin. eğer öyleyse, php.ini dosyasına eklenmiş ek ini dosyalarınız olup olmadığını kontrol edin. Ek olarak, doğru ini dosyasını düzenlediğinizden emin olun. bu dosyalara birden çok yerde sahip olmak mümkündür.
Uday Sawant

18
@UdaySawant çizgiyi yorum sonra devre dışı bırakmayı başardı zend_extension=/usr/lib/php5/20090626+lfs/xdebug.sodan /etc/php5/conf.d/xdebug.ini. Ancak cevapta belirtilen satırlarda /usr/lib/php5veya içinde yoktur /etc.
Haralan Dobrev

5
Aslında, uzantıyı hiç yüklememek ve yalnızca gerekirse yüklemek daha iyidir. XDebug, devre dışı bırakılsa bile işleri çok yavaşlatır. Bir web sayfası oluşturan bazı betiklerde hata ayıklarken / profil oluştururken performansın bu kadar düştüğünü düşünmeyebilir, ancak arka plan programı betikleri ile çok şey gösterir. Ben sadece tüm adresten yüklenmemesi neden bir blog yazısı yazdı, burada, daha iyidir: bit.ly/14SaWpp
thesilentman

99

Ubuntu'ya benzer Linux dağıtımlarında çalışan kolay bir çözüm

sudo php5dismod xdebug
sudo service apache2 restart

10
Sağladığınız çözüm hakkında biraz daha açıklama ekleyerek yanıtınızı biraz daha detaylandırır mısınız?
abarisone

3
Bu komut ubuntu için centOS değil. Bu açıklamayı sağlamalı, çünkü aynı linux dağıtımını kullanan tek kişi siz değilsiniz.
MaXi32

1
bu apache2 içindir, CLI için değildir. Bunların farklı php.ini dosyaları olabilir
Adib Aroui

6
PHP sürümünüze bağlı olarak şunu girmelisiniz$ sudo phpdismod xdebug
RousseauAlexandre

2
Bu cevap sadece Apache'nin mod-php'si ile kullanıldığında PHP için geçerlidir.
John Hunt

35

In Linux Ubuntu ( - belki de başka o test edilmemiş olan) dağıtım PHP 5 gemide, şunları kullanabilirsiniz:

sudo php5dismod xdebug

Ve PHP 7 ile

sudo phpdismod xdebug

Bundan sonra lütfen sunucuyu yeniden başlatın:

sudo service apache2 restart

PHP 7'nin xdebug'u ini dosyasından kaldırdığına inanıyorum. Yani bu cevap bana yardımcı oldu.
Keith Holliday

1
PHP7 için çalıştı. Php.ini'de xdebug ayarlarını yorumlamak işe yaramadı.
Kalob Taulien

1
İşe yaramadı. UYARI: Modül xdebug ini dosyası /etc/php/7.1/mods-available
dxvargas

25

Ayrıca, xdebug_disable()kodunuza ekleyebilirsiniz . Deneyin:

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


32
Bu yalnızca
yığın izlerini

Bu, birçok durumla başa çıkmanın harika bir yoludur. OP'nin ihtiyaçlarını gerçekten karşılamasa bile bunun için teşekkürler.
Jake

3
@ Jake, OP'nin bir kasap aradığından emin değilim.
thephpdev

1
@Jake hehe. Zaten sadece şaka yapıyordum. 😛
thephpdev

1
@BinarWeb çünkü insanlar bu işlevin tüm xdebug'ı devre dışı bıraktığını ve performansı iyileştirdiğini düşünebilir, ancak bu değil
Fogus

12

Yapılandırma dosyasını yeniden adlandırdım ve sunucuyu yeniden başlattım:

$ 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

Benim için çalıştı.


Bu yerine /etc/php/7.0/fpm/conf.d ait /etc/php/7.0/cli/conf.d dışında benim için çalıştı
Will

Bu aynı zamanda mac osx veya centos vagrant üzerinde php 7.2,9 üzerinde çalışacaktır. Sadece xdebug.ini olarak xdebug.ini.old veya başka bir şey olarak yeniden adlandırın
vknyvz

Bu şef
Micheal C Wallas

10

Php.ini'de yorum uzantısı ve Apache'yi yeniden başlatın. İşte basit bir komut dosyası (ona kısayol atayabilirsiniz)

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

XDebug'ı tamamen devre dışı bırakmak için, bu doğru cevap, @ UdaySawant'ın cevabındaki yorumuma bakın.
thesilentman

8

xubuntu'da bununla CLI için xdebug'u tamamen devre dışı bıraktım ...

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

not: bu gerçekten besteci güncellemeleri için bana yardımcı oldu. performans sorunları için xdebug'u devre dışı bırakmak gerekiyor.
Artistan

3
bu, laravel homestead için de geçerli. homestead / laravel'de xdebug'u devre dışı bırakmak için dosyadaki bölümü yorumlamanız yeterlidir/etc/php5/cli/conf.d/20-xdebug.ini
ulkas

passthruXdebug etkinleştirilmiş işlev aracılığıyla terminalden başka bir php betiğini çalıştıran terminalden php komut dosyasını çalıştırırsanız , xdebug askıda kalabilir ve yürütmeyi durdurabilir.
Gherman

1
Olumsuz oylamanın ne için olduğundan emin değilim, bu, diğer ortamlar için değil, CLI için xdebug'u devre dışı bırakmanın tek yolu gibi görünüyor. Yine de unlink, rmvarsa over kullanırdım .
Andy

4
İni'yi rm / bağlantısını kesmem, bunun yerine ulkas'ın önerdiği gibi yapıp sudo nano /etc/php/7.0/cli/conf.d/20-xdebug.iniyorum yapmam .
Justin

7

Windows (WAMP) üzerinde CLI ini dosyasında:

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

yorum satırı

; XDEBUG Extension

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

Apache işleyecek xdebugve besteci işlemez .


4

İki seçenek:

1: Başlatma Komut Dosyasına aşağıdaki kodu ekleyin:

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

2: php.ini'ye aşağıdaki bayrağı ekleyin

 xdebug.remote_autostart=0
 xdebug.remote_enable=0

1. seçenek önerilir.


4

PHP.ini dosyanızı bulun ve XDebug'ı arayın.

normalde Ubuntu'da yolu

/etc/php5/apache2/php.ini  

Aşağıdaki değişiklikleri yapın (Başlangıçta ekleyerek yorumlamak daha iyidir)

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

sonra Ubuntu için sunucunuzu yeniden başlatın

sudo service apache2 restart

4

Xdebug'ı devre dışı bırakın

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

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

Sonra her şeyi yorumlayın ve kaydedin.


GÜNCELLEME - Yalnızca CLI için devre dışı bırak

@ İgoemon'un yorumuna göre, bu daha iyi bir yöntemdir:

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

Not: PHP sürümünüzün yolunu güncelleyin.


Bu bir çözüm değildir, çünkü /etc/php/7.0/cli/conf.d/20-xdebug.ini sadece bir symlink'tir ve eğer onu düzenlerseniz, cli ve non-cli için ortak olan orijinal dosyayı düzenlersiniz. Bence doğru çözüm, sembolik bağlantıyı silmek.
igoemon

Cevap güncellendi ^.
Justin

4

Ubuntu 16.04, xdebug'u PHP'den kaldırır.

Php.ini dosyanızı bulun ve xdebug'un orada olduğundan emin olun:

grep -r "xdebug" /etc/php/

Bu, farklı sürümlerle gelebilir, eğer öyleyse php -v , sürümünüzü bulmak için .

Php.ini dosyasını şu şekilde düzenleyin:

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

Satırı yorumlayın:

//zend_extension=xdebug.so

Dosya 'yı kaydet


Evet, yaptığınız tüm (yanlış) xdebug yapılandırmalarını bulmak için kesinlikle ilk komuta ihtiyacınız var. Teşekkürler!
Aaron Liu

4

php-fpmAşağıdakileri kullanıyorsanız yeterli olmalıdır:

sudo phpdismod xdebug
sudo service php-fpm restart

Dikkat edin, php sürümünüze bağlı olarak bunu ayarlamanız gerekecek. Örneğin php 7.0'ı çalıştırmak için şunları yaparsınız:

sudo phpdismod xdebug
sudo service php7.0-fpm restart

Php-fpm çalıştırdığınız için, gerçek web sunucusunu yeniden başlatmanıza gerek yoktur. Her durumda, fpm kullanmıyorsanız, aşağıdaki komutlardan herhangi birini kullanarak web sunucunuzu yeniden başlatabilirsiniz:

sudo service apache2 restart
sudo apache2ctl restart

3

Benzer bir sorunla karşılaştım. Bazen xdebug.so dosyasını php.ini içinde bulamazsınız. Bu durumda, phpinfo()bir php dosyasında çalıştırın ve Additional .ini files parsed. Burada daha fazla ini dosyası göreceksiniz. Bunlardan biri xdebug'un ini dosyası olacaktır. Sadece bu dosyayı kaldırın (veya yeniden adlandırın), apache'yi yeniden başlatın ve bu uzantı kaldırılacaktır.


3

Aşağıdaki Problem vardı: Ayarlasam bile

xdebug.remote_enable=0 

Xdebug-Error-Message-Decoration gösterildi.

Çözümüm:

xdebug.default_enable=0

Yalnızca bu Bayrağı kullanırsam Xdebug devre dışı bırakıldı.


3

(Bu CentOS içindir)

Yapılandırma dosyasını yeniden adlandırın ve apache'yi yeniden başlatın.

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

Yeniden etkinleştirmek için tersini yapın.


1

Mac OS X'te MAMP Pro kullanıyorsanız , PHP sekmesi altında Xdebug'u Etkinleştir seçeneğinin işaretini kaldırarak bu işlem MAMP istemcisi aracılığıyla yapılır :

MAMP Pro'da Xdebug'u devre dışı bırakma


1

Yani, evet, ihtiyacınız olan her şey, INI dosyasında şöyle bir yorum satırı zend_extension=xdebug.so veya benzeri.

Noktalı virgül eklenerek yorumlar yapılabilir.

Ancak, bu tür bir yanıt zaten eklendi ve Xdebug durumunu değiştirmek için hazır çözümü paylaşmak istiyorum.

Xdebug için hızlı değiştirici yaptım. Belki birisi için yararlı olur.

Xdebug Değiştirici


1

WAMP için, görev çubuğu tepsisindeki Wamp simgesine sol tıklayın. PHP'nin üzerine gelin ve ardından php.ini'ye tıklayın ve metin düzenleyicinizde açın.

Şimdi, 'zend_extension' ifadesini arayın ve ekleyin; (noktalı virgül) önünde.

WAMP'ı yeniden başlatın ve gitmeniz iyi olur.


1

Apache / 2.4.33 (Win64) PHP / 7.2.4 myHomeBrew yığını

Php.ini'nin sonunda Xdebug'u PhpStorm ile kullanmak üzere yönetmek için aşağıdakileri kullanıyorum

; 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

PHPStorm'dan esinlenerek bir dosyaya sağ tıklama -> hata ayıklama -> ...

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

önemli olan şey -dxdebug.remote_enable=0 -dxdebug.default_enable=0


1

Bu bash betiğini xdebug'ı değiştirmek için oluşturdum. En azından Ubuntu / Debian'da çalışması gerektiğini düşünüyorum. Bu PHP7 + içindir. PHP5 için php5dismod / php5enmod kullanın.

#!/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

Xdebug'u yalnızca belirli PHP sürümü veya sapi için devre dışı bırakın. Bu durumda PHP 7.2 fpm

sudo phpdismod -v 7.2 -s fpm xdebug
sudo service php7.2-fpm nginx restart
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.