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.
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:
Kendinizi bulun php.ini
ve 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?
zend_extension=/usr/lib/php5/20090626+lfs/xdebug.so
dan /etc/php5/conf.d/xdebug.ini
. Ancak cevapta belirtilen satırlarda /usr/lib/php5
veya içinde yoktur /etc
.
Ubuntu'ya benzer Linux dağıtımlarında çalışan kolay bir çözüm
sudo php5dismod xdebug
sudo service apache2 restart
$ sudo phpdismod xdebug
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
Ayrıca, xdebug_disable()
kodunuza ekleyebilirsiniz . Deneyin:
if(function_exists('xdebug_disable')) { xdebug_disable(); }
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ı.
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');
xubuntu'da bununla CLI için xdebug'u tamamen devre dışı bıraktım ...
sudo rm /etc/php5/cli/conf.d/*xdebug*
/etc/php5/cli/conf.d/20-xdebug.ini
passthru
Xdebug 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.
unlink
, rm
varsa over kullanırdım .
sudo nano /etc/php/7.0/cli/conf.d/20-xdebug.ini
yorum yapmam .
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 xdebug
ve besteci işlemez .
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
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.
grep -r "xdebug" /etc/php/
Bu, farklı sürümlerle gelebilir, eğer öyleyse php -v
, sürümünüzü bulmak için .
sudo vi /etc/php/5.6/mods-available/xdebug.ini
//zend_extension=xdebug.so
php-fpm
Aş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
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.
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 :
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.
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
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
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
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