Cara menonaktifkan XDebug

124

Saya pikir server saya menjadi lambat sejak saya menginstal XDebug. Jadi, untuk menguji hipotesis saya, saya ingin menonaktifkan XDebug sepenuhnya. Saya telah mencari tutorial tentang bagaimana melakukan ini tetapi saya tidak dapat menemukan informasi seperti itu.

Beto Aveiga
sumber

Jawaban:

163

Temukan php.inidan cari XDebug.

Setel autostart xdebug ke false

xdebug.remote_autostart=0  
xdebug.remote_enable=0

Nonaktifkan profiler Anda

xdebug.profiler_enable=0

Perhatikan bahwa mungkin ada penurunan kinerja bahkan dengan xdebug dinonaktifkan tetapi dimuat . Untuk menonaktifkan pemuatan ekstensi itu sendiri, Anda perlu memberi komentar di php.ini Anda. Temukan entri yang terlihat seperti ini:

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

dan memberi ;komentar, misalnya ;zend_extension = ….

Lihat posting XDebug ini, bagaimana cara menonaktifkan debugging jarak jauh untuk file .php tunggal?

Uday Sawant
sumber
Terima kasih! Saya menemukan bahwa masalah saya adalah APC, tampaknya memori saya rendah. Anda benar, xdebug adalah bagian dari PHP, bukan modul Apache. Sekarang semuanya berjalan dengan baik.
Beto Aveiga
1
@Uday dan bagaimana jika saya tidak dapat menemukan semua ini di php.ini saya. Saya telah memeriksa di mana-mana di dalam / etc / php termasuk dengan pencarian grep.
Haralan Dobrev
@HaralanDobrev Periksa phpinfo () untuk melihat apakah xdebug benar-benar diaktifkan. jika ya, periksa apakah Anda memiliki file ini tambahan yang dilampirkan ke file php.ini. Selain itu pastikan Anda mengedit file ini dengan benar. dimungkinkan untuk memiliki file-file ini di beberapa lokasi.
Uday Sawant
18
@UdaySawant Saya dapat menonaktifkannya setelah mengomentari baris zend_extension=/usr/lib/php5/20090626+lfs/xdebug.sodari /etc/php5/conf.d/xdebug.ini. Namun baik di dalam /usr/lib/php5maupun di /etcbaris yang ditentukan dalam jawaban tidak tersedia.
Haralan Dobrev
5
Sebenarnya, lebih baik tidak memuat ekstensi sama sekali, dan hanya memuatnya, jika perlu. XDebug sebenarnya sangat memperlambat banyak hal, bahkan jika dinonaktifkan. Seseorang mungkin tidak merasa kinerjanya telah menurun sebanyak itu, ketika men-debug / membuat profil beberapa skrip yang membuat halaman web, tetapi dengan skrip daemon, itu menunjukkan banyak hal. Saya baru saja menulis posting blog tentang mengapa tidak memuatnya sama sekali, lebih baik, di sini: bit.ly/14SaWpp
thesilentman
99

Solusi mudah bekerja pada distribusi Linux yang mirip dengan Ubuntu

sudo php5dismod xdebug
sudo service apache2 restart
Arvi Võime
sumber
10
Bisakah Anda menjelaskan lebih lanjut jawaban Anda dengan menambahkan sedikit lebih banyak deskripsi tentang solusi yang Anda berikan?
abarisone
3
Perintah itu untuk ubuntu bukan centOS. Sebaiknya berikan penjelasan tersebut karena Anda bukanlah satu-satunya orang yang menggunakan distro linux yang sama.
MaXi32
1
ini untuk apache2 dan bukan untuk CLI. Ini mungkin memiliki file php.ini yang berbeda
Adib Aroui
6
Bergantung pada versi PHP Anda, Anda harus memasukkan$ sudo phpdismod xdebug
RousseauAlexandre
2
Jawaban ini hanya berlaku untuk PHP jika digunakan dengan mod-php Apache.
John Hunt
35

Di Linux Ubuntu ( mungkin juga yang lain - belum diuji ) distribusi dengan PHP 5 , Anda dapat menggunakan:

sudo php5dismod xdebug

Dan dengan PHP 7

sudo phpdismod xdebug

Dan setelah itu, silakan restart server:

sudo service apache2 restart
kkochanski
sumber
PHP 7 menghapus xdebug dari file ini, saya yakin. Jadi jawaban ini membantu saya.
Keith Holliday
1
Bekerja untuk PHP7. Mengomentari pengaturan xdebug di php.ini tidak berhasil.
Kalob Taulien
1
Tidak berhasil. PERINGATAN: File modul xdebug ini tidak ada di bawah
/etc/php/7.1/mods-available
25

Juga, Anda dapat menambahkan xdebug_disable()kode Anda. Mencoba:

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

Zack Katz
sumber
32
Ini hanya menonaktifkan tampilan stacktraces, itu tidak benar-benar menonaktifkan xdebug (fungsi yang sangat bernama, saya tahu)
BlueRaja - Danny Pflughoeft
Ini adalah cara yang luar biasa untuk menghadapi banyak situasi. Terima kasih untuk ini meskipun itu tidak benar-benar kebutuhan OP.
Jake
3
@ Jake, saya tidak yakin OP sedang mencari tukang daging.
thephpdev
1
@Buatlah hei. Lagipula hanya bercanda. 😛
thephpdev
1
@BinarWeb karena orang dapat berpikir bahwa fungsi ini menonaktifkan seluruh xdebug dan meningkatkan kinerja, tetapi ternyata tidak
Fogus
12

Saya mengganti nama file konfigurasi dan memulai ulang 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

Itu berhasil untuk saya.

Sinan Eldem
sumber
Ini berhasil untuk saya, kecuali di /etc/php/7.0/cli/conf.d alih-alih /etc/php/7.0/fpm/conf.d
Akankah
Ini juga akan bekerja pada php 7.2,9 di mac osx atau centos gelandangan. Ubah saja namanya menjadi xdebug.ini menjadi xdebug.ini.old atau yang lain
vknyvz
Ini dia kepala
Micheal C Wallas
10

Ekstensi komentar di php.ini dan mulai ulang Apache. Ini adalah skrip sederhana (Anda dapat menetapkan pintasan untuk itu)

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
sumber
Untuk benar-benar menonaktifkan XDebug sepenuhnya, ini adalah jawaban yang benar, lihat komentar saya di jawaban @ UdaySawant.
thesilentman
8

di xubuntu saya benar-benar menonaktifkan xdebug untuk CLI dengan ini ...

sudo rm /etc/php5/cli/conf.d/*xdebug*
Artistan
sumber
catatan: ini sangat membantu saya untuk pembaruan komposer. diperlukan untuk menonaktifkan xdebug karena masalah kinerja.
Artistan
3
ini juga berlaku untuk laravel wisma. untuk menonaktifkan xdebug di homestead / laravel cukup beri komentar di bagian dalam file/etc/php5/cli/conf.d/20-xdebug.ini
ulkas
Perlu disebutkan jika Anda menjalankan skrip php dari terminal yang menjalankan skrip php lain dari terminal melalui passthrufungsi dengan xdebug diaktifkan, xdebug mungkin hang dan menghentikan eksekusi.
Gherman
1
Tidak yakin untuk apa downvote itu, ini tampaknya satu-satunya cara untuk menonaktifkan xdebug untuk CLI dan bukan lingkungan lain. Meskipun saya akan menggunakan unlinklebih rmjika tersedia.
Andy
4
Saya tidak akan rm / membatalkan tautan ini, alih-alih melakukan seperti yang disarankan ulka, sudo nano /etc/php/7.0/cli/conf.d/20-xdebug.inidan berkomentar.
Justin
7

Di Windows (WAMP) di file CLI ini:

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

baris komentar

; XDEBUG Extension

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

Apache akan memproses xdebug, dan komposer tidak.

Vladimir Vukanac
sumber
4

Dua pilihan:

1: Tambahkan kode berikut di Script inisialisasi:

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

2: Tambahkan tanda berikut ke php.ini

 xdebug.remote_autostart=0
 xdebug.remote_enable=0

Opsi pertama direkomendasikan.

Sumoanand
sumber
4

Temukan PHP.ini Anda dan cari XDebug.

biasanya di Ubuntu jalurnya adalah

/etc/php5/apache2/php.ini  

Lakukan perubahan berikut (Lebih baik hanya memberi komentar dengan menambahkan; di awal)

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

kemudian restart server Anda lagi untuk Ubuntu

sudo service apache2 restart
Shadab Salam
sumber
4

Nonaktifkan xdebug

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

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

Kemudian komentari semuanya dan simpan.


UPDATE - Nonaktifkan hanya untuk CLI

Sesuai komentar @ igoemon, ini adalah metode yang lebih baik:

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

Catatan: Perbarui jalur ke versi PHP Anda.

Justin
sumber
Bukan solusi, karena /etc/php/7.0/cli/conf.d/20-xdebug.ini hanyalah symlink dan jika Anda mengeditnya, Anda mengedit file asli yang umum untuk cli dan non-cli. Saya pikir solusi yang tepat adalah menghapus symlink sederhana.
igoemon
Jawaban yang diperbarui ^.
Justin
4

Ubuntu 16.04 menghapus xdebug dari PHP.

Temukan file php.ini Anda dan pastikan xdebug ada di sana:

grep -r "xdebug" /etc/php/

Ini mungkin muncul dengan versi yang berbeda, jika dijalankan php -v untuk menemukan versi Anda.

Edit file php.ini, seperti:

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

Komentari baris:

//zend_extension=xdebug.so

Simpan file

Andrew Atkinson
sumber
Ya, Anda pasti membutuhkan perintah pertama untuk mengetahui semua konfigurasi xdebug (salah) yang Anda lakukan. Terima kasih!
Aaron Liu
4

Jika Anda menggunakan php-fpmyang berikut ini seharusnya sudah cukup:

sudo phpdismod xdebug
sudo service php-fpm restart

Perhatikan, Anda perlu mengubah ini tergantung pada versi php Anda. Misalnya menjalankan php 7.0 Anda akan melakukan:

sudo phpdismod xdebug
sudo service php7.0-fpm restart

Karena, Anda menjalankan php-fpm, seharusnya tidak perlu memulai ulang server web yang sebenarnya. Bagaimanapun jika Anda tidak menggunakan fpm maka Anda cukup me-restart server web Anda menggunakan salah satu dari perintah di bawah ini:

sudo service apache2 restart
sudo apache2ctl restart
Kode siklon
sumber
3

Saya mengalami masalah serupa. Terkadang, Anda tidak akan menemukan xdebug.so di php.ini. Dalam hal ini, jalankan phpinfo()dalam file php dan periksa Additional .ini files parsed. Di sini Anda akan melihat lebih banyak file ini. Salah satunya adalah file ini xdebug. Hapus saja (atau ganti nama) file ini, restart apache, dan ekstensi ini akan dihapus.

rumah kaca
sumber
3

Saya telah mengikuti Masalah: Bahkan jika saya mengatur

xdebug.remote_enable=0 

Xdebug-Error-Message-Decoration ditampilkan.

Solusi saya:

xdebug.default_enable=0

Hanya jika saya menggunakan Bendera ini, Xdebug dinonaktifkan.

suther
sumber
3

(Ini untuk CentOS)

Ubah nama file konfigurasi dan mulai ulang apache.

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

Lakukan kebalikannya untuk mengaktifkan kembali.

crmpicco.dll
sumber
1

Jika Anda menggunakan MAMP Pro di Mac OS X, itu dilakukan melalui klien MAMP dengan menghapus centang Activate Xdebug di bawah tab PHP :

Menonaktifkan Xdebug di MAMP Pro

Casper André Casse
sumber
1

Jadi, ya, semua yang Anda butuhkan, cukup beri komentar di file INI seperti zend_extension=xdebug.so atau serupa.

Komentar dapat dibuat dengan menambahkan titik koma.

Tapi, jawaban seperti itu sudah ditambahkan, dan saya ingin membagikan solusi yang siap untuk mengganti status Xdebug.

Saya telah membuat pengalih cepat untuk Xdebug. Mungkin itu akan berguna bagi seseorang.

Xdebug Switcher

Kirby
sumber
1

Untuk WAMP, klik kiri pada ikon Wamp di taskbar tray. Arahkan kursor ke PHP lalu klik php.ini dan buka di editor teks Anda.

Sekarang, cari frase 'zend_extension' dan tambahkan; (titik koma) di depannya.

Mulai ulang WAMP dan Anda siap melakukannya.

bantya
sumber
1

Apache / 2.4.33 (Win64) PHP / 7.2.4 myHomeBrew stack

Di akhir php.ini saya menggunakan berikut ini untuk mengelola Xdebug untuk digunakan dengan 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
sumber
1

Terinspirasi oleh PHPStorm klik kanan pada 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

yang penting adalah -dxdebug.remote_enable=0 -dxdebug.default_enable=0

max4ever
sumber
1

Saya membuat skrip bash ini untuk mengubah xdebug. Saya pikir itu harus berfungsi setidaknya di Ubuntu / Debian. Ini untuk PHP7 +. Untuk PHP5 gunakan 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
sumber
1

Nonaktifkan xdebug hanya untuk versi PHP atau sapi tertentu. Dalam hal ini PHP 7.2 fpm

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