Jak wyłączyć XDebug


124

Myślę, że mój serwer zwolnił, odkąd zainstalowałem XDebug. Tak więc, aby sprawdzić moją hipotezę, chcę całkowicie wyłączyć XDebug. Szukałem poradników, jak to zrobić, ale nie mogę znaleźć takich informacji.

Odpowiedzi:


164

Znajdź swój php.inii poszukaj XDebug.

Ustaw autostart xdebug na false

xdebug.remote_autostart=0  
xdebug.remote_enable=0

Wyłącz swój profiler

xdebug.profiler_enable=0

Zauważ, że może wystąpić utrata wydajności nawet przy wyłączonym, ale załadowanym xdebug . Aby wyłączyć ładowanie samego rozszerzenia, musisz skomentować je w swoim php.ini. Znajdź wpis wyglądający tak:

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

i wstaw ;komentarz, np ;zend_extension = ….

Sprawdź ten post XDebug, jak wyłączyć zdalne debugowanie dla pojedynczego pliku .php?


Dzięki! Odkryłem, że moim problemem był APC, moja pamięć była najwyraźniej słaba. Masz rację, xdebug jest częścią PHP, a nie modułem Apache. Teraz wszystko działa dobrze.
Beto Aveiga

1
@Uday a co, jeśli nie mogę znaleźć tego w moim php.ini. Sprawdziłem wszędzie w / etc / php, łącznie z wyszukiwaniem grep.
Haralan Dobrev

@HaralanDobrev Sprawdź phpinfo (), aby zobaczyć, czy xdebug jest rzeczywiście włączony. jeśli tak, sprawdź, czy masz dodatkowe pliki ini dołączone do pliku php.ini. Dodatkowo upewnij się, że edytujesz poprawny plik ini. możliwe jest przechowywanie tych plików w wielu lokalizacjach.
Uday Sawant

18
@UdaySawant Udało mi się go wyłączyć po skomentowaniu linii zend_extension=/usr/lib/php5/20090626+lfs/xdebug.soz /etc/php5/conf.d/xdebug.ini. Jednak ani w, /usr/lib/php5ani w /etcwierszach określonych w odpowiedzi nie są dostępne.
Haralan Dobrev

5
Właściwie lepiej w ogóle nie ładować rozszerzenia i ładować je tylko w razie potrzeby. XDebug w rzeczywistości bardzo spowalnia działanie, nawet jeśli jest wyłączony. Podczas debugowania / profilowania niektórych skryptów tworzących stronę internetową można nie mieć wrażenia, że ​​wydajność spadła tak bardzo, ale w przypadku skryptów demonów to wiele pokazuje. Właśnie napisałem post na blogu o tym, dlaczego w ogóle go nie ładować, jest lepiej, tutaj: bit.ly/14SaWpp
thesilentman

99

Proste rozwiązanie działające na dystrybucjach Linuksa podobnych do Ubuntu

sudo php5dismod xdebug
sudo service apache2 restart

10
Czy mógłbyś bardziej szczegółowo opisać swoją odpowiedź, dodając więcej opisu rozwiązania, które oferujesz?
abarisone

3
To polecenie dotyczy ubuntu, a nie centOS. Powinieneś podać to wyjaśnienie, ponieważ nie jesteś jedyną osobą używającą tej samej dystrybucji Linuksa.
MaXi32

1
to jest dla apache2 a nie dla CLI. Te mogą mieć różne pliki php.ini
Adib Aroui

6
W zależności od wersji PHP, powinieneś wpisać$ sudo phpdismod xdebug
RousseauAlexandre

2
Ta odpowiedź dotyczy tylko PHP, gdy jest używany z mod-php Apache.
John Hunt

35

W dystrybucji Linuksa Ubuntu ( może i innej - nie jest testowana ) z PHP 5 na pokładzie można użyć:

sudo php5dismod xdebug

A z PHP 7

sudo phpdismod xdebug

Następnie zrestartuj serwer:

sudo service apache2 restart

Wydaje mi się, że PHP 7 usunęło xdebug z pliku ini. Więc ta odpowiedź mi pomogła.
Keith Holliday

1
Pracował dla PHP7. Komentowanie ustawień xdebug w php.ini nie działało.
Kalob Taulien

1
Nie udało się. OSTRZEŻENIE: Plik ini modułu xdebug nie istnieje w /etc/php/7.1/mods-available
dxvargas

24

Możesz także dodać xdebug_disable()do swojego kodu. Próbować:

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


33
To tylko wyłącza wyświetlanie śladów stosu, tak naprawdę nie wyłącza xdebug (strasznie nazwana funkcja, wiem)
BlueRaja - Danny Pflughoeft

To wspaniały sposób na radzenie sobie w wielu sytuacjach. Dzięki za to, nawet jeśli tak naprawdę nie zaspokaja potrzeb OP.
Jake

3
@Jake, nie jestem pewien, czy OP szukał rzeźnika.
thephpdev

1
@Jake hehe. I tak tylko żartowałem. 😛
thephpdev

1
@BinarWeb, ponieważ ludzie mogliby pomyśleć, że ta funkcja wyłącza cały xdebug i poprawia wydajność, ale tak nie jest
Fogus

12

Zmieniłem nazwę pliku konfiguracyjnego i zrestartowałem serwer:

$ 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

U mnie zadziałało.


To zadziałało dla mnie, z wyjątkiem /etc/php/7.0/cli/conf.d zamiast /etc/php/7.0/fpm/conf.d
Will

Będzie to również działać na php 7.2,9 na Mac OSX lub na Centos Vagrant. Po prostu zmień nazwę na xdebug.ini na xdebug.ini.old lub coś innego
vknyvz

To jest szef
Micheal C Wallas

10

Rozszerzenie komentarza w php.ini i zrestartuj Apache. Oto prosty skrypt (możesz przypisać do niego skrót)

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

Aby naprawdę całkowicie wyłączyć XDebug, ta jest poprawną odpowiedzią, zobacz mój komentarz w odpowiedzi @ UdaySawant.
thesilentman

8

w xubuntu całkowicie wyłączyłem xdebug dla CLI tym ...

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

uwaga: to naprawdę pomogło mi w aktualizacji kompozytorów. potrzebne do wyłączenia xdebug z powodu problemów z wydajnością.
Artistan

3
działa to również w przypadku gospodarstwa laravel. aby wyłączyć xdebug w homestead / laravel, po prostu zakomentuj sekcję w pliku/etc/php5/cli/conf.d/20-xdebug.ini
ulkas

Warto wspomnieć, że jeśli uruchamiasz skrypt php z terminala, który uruchamia inny skrypt php z terminala za pośrednictwem passthrufunkcji z włączonym xdebug, xdebug może zawiesić się i zatrzymać wykonywanie.
Gherman

1
Nie jestem pewien, za co głosowano, wydaje się, że jest to jedyny sposób na wyłączenie xdebug dla CLI, a nie innych środowisk. Chociaż użyłbym unlinkwięcej, rmjeśli jest dostępny.
Andy,

4
Nie rmowałbym / rozłączał ini, zamiast tego zrobiłbym tak, jak sugerowały ulkas sudo nano /etc/php/7.0/cli/conf.d/20-xdebug.inii skomentował to.
Justin

7

W systemie Windows (WAMP) w pliku ini CLI:

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

wiersz komentarza

; XDEBUG Extension

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

Apache przetworzy xdebug, a kompozytor nie.


4

Dwie opcje:

1: Dodaj następujący kod w skrypcie inicjalizacyjnym:

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

2: Dodaj następującą flagę do php.ini

 xdebug.remote_autostart=0
 xdebug.remote_enable=0

Zalecana jest pierwsza opcja.


4

Znajdź swój plik PHP.ini i poszukaj XDebug.

zwykle w Ubuntu jego ścieżka to

/etc/php5/apache2/php.ini  

Wprowadź następujące zmiany (lepiej je po prostu skomentować, dodając; na początku)

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

następnie ponownie uruchom serwer w systemie Ubuntu

sudo service apache2 restart

4

Wyłącz xdebug

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

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

Następnie skomentuj wszystko i zapisz.


UPDATE - Wyłącz tylko dla CLI

Zgodnie z komentarzem @ igoemon jest to lepsza metoda:

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

Uwaga: zaktualizuj ścieżkę do swojej wersji PHP.


To nie jest rozwiązanie, ponieważ /etc/php/7.0/cli/conf.d/20-xdebug.ini to tylko dowiązanie symboliczne i jeśli go edytujesz, edytujesz oryginalny plik, który jest wspólny dla cli i non-cli. Myślę, że właściwym rozwiązaniem jest proste usunięcie linku symbolicznego.
igoemon

Zaktualizowana odpowiedź ^.
Justin

4

Ubuntu 16.04 usuwa xdebug z PHP.

Znajdź swój plik php.ini i upewnij się, że xdebug tam jest:

grep -r "xdebug" /etc/php/

Może to spowodować pojawienie się różnych wersji, jeśli tak, uruchom, php -vaby znaleźć swoją wersję.

Edytuj plik php.ini, na przykład:

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

Skomentuj linię:

//zend_extension=xdebug.so

Zapisz plik


Tak, zdecydowanie potrzebujesz pierwszego polecenia, aby znaleźć wszystkie (błędne) konfiguracje xdebug, które zrobiłeś. Dzięki!
Aaron Liu

4

Jeśli używasz php-fpmnastępujących, powinno wystarczyć:

sudo phpdismod xdebug
sudo service php-fpm restart

Zauważ, że będziesz musiał to dostosować w zależności od wersji php. Na przykład uruchomienie php 7.0 zrobiłbyś:

sudo phpdismod xdebug
sudo service php7.0-fpm restart

Ponieważ używasz php-fpm, nie powinno być potrzeby restartowania właściwego serwera WWW. W każdym razie, jeśli nie używasz fpm, możesz po prostu zrestartować serwer WWW za pomocą dowolnego z poniższych poleceń:

sudo service apache2 restart
sudo apache2ctl restart

3

Wpadłem na podobny problem. Czasami nie znajdziesz xdebug.so w php.ini. W takim przypadku uruchom phpinfo()plik php i sprawdź Additional .ini files parsed. Tutaj zobaczysz więcej plików ini. Jednym z nich będzie plik ini xdebug. Po prostu usuń (lub zmień nazwę) tego pliku, uruchom ponownie apache, a to rozszerzenie zostanie usunięte.


3

Miałem następujący problem: nawet jeśli ustawię

xdebug.remote_enable=0 

Pokazano Xdebug-Error-Message-Decoration.

Moje rozwiązanie:

xdebug.default_enable=0

Tylko jeśli użyję tej flagi, Xdebug został wyłączony.


3

(To jest dla CentOS)

Zmień nazwę pliku konfiguracyjnego i uruchom ponownie Apache.

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

Zrób w odwrotnej kolejności, aby ponownie włączyć.


1

Jeśli używasz MAMP Pro w systemie Mac OS X, odbywa się to za pośrednictwem klienta MAMP, odznaczając opcję Aktywuj Xdebug na karcie PHP :

Wyłączanie Xdebug w MAMP Pro


1

Więc tak, wszystko, czego potrzebujesz, po prostu komentarz w pliku INI zend_extension=xdebug.solub podobny.

Komentarze można dodawać, dodając średnik.

Ale taka odpowiedź już dodana i chciałbym podzielić się gotowym rozwiązaniem zmiany statusu Xdebug.

Zrobiłem szybką zmianę dla Xdebug. Może komuś się przyda.

Xdebug Switcher


1

W przypadku WAMP kliknij lewym przyciskiem myszy ikonę Wampa na pasku zadań. Najedź na PHP, a następnie kliknij php.ini i otwórz go w swoim edytorze tekstowym.

Teraz wyszukaj frazę „zend_extension” i dodaj; (średnik) na początku.

Uruchom ponownie WAMP i gotowe.


1

Apache / 2.4.33 (Win64) PHP / 7.2.4 stos myHomeBrew

Na końcu php.ini używam poniższego do zarządzania Xdebug do użytku z 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

Zainspirowany PHPStorm kliknij prawym przyciskiem myszy plik -> debuguj -> ...

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

ważne jest -dxdebug.remote_enable=0 -dxdebug.default_enable=0


1

Stworzyłem ten skrypt bash do przełączania xdebug. Myślę, że powinno działać przynajmniej na Ubuntu / Debian. To jest dla PHP7 +. W przypadku PHP5 użyj 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

Wyłącz xdebug tylko dla niektórych wersji PHP lub sapi. W tym przypadku PHP 7,2 fpm

sudo phpdismod -v 7.2 -s fpm xdebug
sudo service php7.2-fpm nginx restart
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.