So deaktivieren Sie XDebug


124

Ich denke, dass mein Server langsam wurde, seit ich XDebug installiert habe. Um meine Hypothese zu testen, möchte ich XDebug vollständig deaktivieren. Ich habe nach Tutorials gesucht, aber ich kann solche Informationen nicht finden.

Antworten:


163

Finden Sie Ihre php.iniund suchen Sie nach XDebug.

Setzen Sie xdebug autostart auf false

xdebug.remote_autostart=0  
xdebug.remote_enable=0

Deaktivieren Sie Ihren Profiler

xdebug.profiler_enable=0

Beachten Sie, dass es auch bei deaktiviertem, aber geladenem xdebug zu Leistungseinbußen kommen kann . Um das Laden der Erweiterung selbst zu deaktivieren, müssen Sie sie in Ihrer php.ini kommentieren. Finden Sie einen Eintrag, der so aussieht:

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

und setzen Sie ein, ;um es zu kommentieren, z ;zend_extension = ….

Schauen Sie sich diesen Beitrag XDebug an, wie man das Remote-Debugging für eine einzelne .php-Datei deaktiviert?


Vielen Dank! Ich stellte fest, dass mein Problem APC war, mein Gedächtnis war anscheinend niedrig. Sie haben Recht, xdebug ist Teil von PHP, kein Modul von Apache. Jetzt läuft alles gut.
Beto Aveiga

1
@Uday und was ist, wenn ich nichts davon in meiner php.ini finden kann. Ich habe überall in / etc / php nachgesehen, auch bei der Grep-Suche.
Haralan Dobrev

@ HaralanDobrev Überprüfen Sie phpinfo (), um festzustellen, ob xdebug tatsächlich aktiviert ist. Wenn dies der Fall ist, überprüfen Sie, ob zusätzliche INI-Dateien an die Datei php.ini angehängt sind. Stellen Sie außerdem sicher, dass Sie die richtige INI-Datei bearbeiten. Es ist möglich, diese Dateien an mehreren Speicherorten zu haben.
Uday Sawant

18
@UdaySawant Ich konnte es deaktivieren, nachdem ich die Zeile zend_extension=/usr/lib/php5/20090626+lfs/xdebug.sovon kommentiert hatte /etc/php5/conf.d/xdebug.ini. Es sind jedoch weder in /usr/lib/php5noch in /etcden in der Antwort angegebenen Zeilen verfügbar.
Haralan Dobrev

5
Eigentlich ist es besser, die Erweiterung überhaupt nicht zu laden und sie nur bei Bedarf zu laden. XDebug verlangsamt die Dinge tatsächlich sehr, selbst wenn es deaktiviert ist. Man kann nicht glauben, dass sich die Leistung beim Debuggen / Profilieren einiger Skripte, die eine Webseite erstellen, so stark verschlechtert hat, aber bei Daemon-Skripten zeigt sich viel. Ich habe gerade einen Blog-Beitrag darüber geschrieben, warum man ihn überhaupt nicht lädt, ist besser hier: bit.ly/14SaWpp
thesilentman

99

Eine einfache Lösung für Linux-Distributionen, die Ubuntu ähneln

sudo php5dismod xdebug
sudo service apache2 restart

10
Könnten Sie bitte Ihre Antwort näher erläutern und etwas mehr Beschreibung der von Ihnen bereitgestellten Lösung hinzufügen?
Abarisone

3
Dieser Befehl ist für Ubuntu nicht CentOS. Sollte diese Erklärung liefern, da Sie nicht die einzige Person sind, die dieselbe Linux-Distribution verwendet.
MaXi32

1
Dies ist für Apache2 und nicht für CLI. Diese könnten unterschiedliche php.ini-Dateien haben
Adib Aroui

6
Abhängig von Ihrer PHP-Version sollten Sie$ sudo phpdismod xdebug
RousseauAlexandre

2
Diese Antwort gilt nur für PHP, wenn es mit Apaches Mod-PHP verwendet wird.
John Hunt

35

In der Linux-Ubuntu-Distribution ( vielleicht auch eine andere - es ist nicht getestet ) mit PHP 5 an Bord können Sie Folgendes verwenden:

sudo php5dismod xdebug

Und mit PHP 7

sudo phpdismod xdebug

Und danach starten Sie bitte den Server neu:

sudo service apache2 restart

Ich glaube, PHP 7 hat xdebug aus der INI-Datei entfernt. Diese Antwort hat mir also geholfen.
Keith Holliday

1
Arbeitete für PHP7. Das Kommentieren der xdebug-Einstellungen in der php.ini hat nicht funktioniert.
Kalob Taulien

1
Hat nicht funktioniert. WARNUNG: Modul xdebug ini Datei existiert nicht unter /etc/php/7.1/mods-available
dxvargas

25

Sie können xdebug_disable()Ihrem Code auch etwas hinzufügen . Versuchen:

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


32
Dies deaktiviert nur die Anzeige von Stacktraces, es deaktiviert nicht wirklich xdebug (schrecklich benannte Funktion, ich weiß)
BlueRaja - Danny Pflughoeft

Dies ist eine großartige Möglichkeit, mit vielen Situationen umzugehen. Vielen Dank dafür, auch wenn es die Bedürfnisse von OP nicht wirklich erfüllt.
Jake

3
@ Jake, ich bin mir nicht sicher, ob das OP nach einem Metzger gesucht hat.
Thephpdev

1
@ Jake hehe. War sowieso nur ein Scherz. 😛
thephpdev

1
@BinarWeb, weil die Leute denken könnten, dass diese Funktion den gesamten xdebug deaktiviert und die Leistung verbessert, aber es ist nicht
Fogus

12

Ich habe die Konfigurationsdatei umbenannt und den Server neu gestartet:

$ 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

Es hat bei mir funktioniert.


Dies funktionierte für mich, außer in /etc/php/7.0/cli/conf.d anstelle von /etc/php/7.0/fpm/conf.d
Will

Dies wird auch auf PHP 7.2.9 auf Mac OSX oder Centos Vagrant funktionieren. Benennen Sie einfach in xdebug.ini in xdebug.ini.old oder etwas anderes um
vknyvz

Dies ist es Chef
Micheal C Wallas

10

Kommentieren Sie die Erweiterung in der php.ini und starten Sie Apache neu. Hier ist ein einfaches Skript (Sie können ihm eine Verknüpfung zuweisen)

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

Um XDebug wirklich vollständig zu deaktivieren, ist dies die richtige Antwort. Siehe meinen Kommentar in der Antwort von @ UdaySawant.
Thesilentman

8

in xubuntu habe ich xdebug für die CLI damit komplett deaktiviert ...

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

Hinweis: Dies hat mir bei Komponisten-Updates sehr geholfen. wird benötigt, um xdebug für Leistungsprobleme zu deaktivieren.
Artistan

3
Dies funktioniert auch für Laravel Homestead. Um Xdebug in Homestead / Laravel zu deaktivieren, kommentieren Sie einfach den Abschnitt in der Datei/etc/php5/cli/conf.d/20-xdebug.ini
ulkas

Erwähnenswert ist passthru, dass xdebug möglicherweise hängen bleibt und die Ausführung stoppt, wenn Sie ein PHP-Skript vom Terminal ausführen, das ein anderes PHP-Skript vom Terminal über eine Funktion mit aktiviertem xdebug ausführt.
Gherman

1
Sie sind sich nicht sicher, wofür das Downvote gedacht war. Dies scheint die einzige Möglichkeit zu sein, xdebug für die CLI und nicht für andere Umgebungen zu deaktivieren. Obwohl ich würde unlinküber , rmwenn es verfügbar ist .
Andy

4
Ich würde die INI nicht trennen, sondern das tun, was ulkas vorgeschlagen hat, sudo nano /etc/php/7.0/cli/conf.d/20-xdebug.iniund es auskommentieren .
Justin

7

Unter Windows (WAMP) in der CLI-INI-Datei:

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

Kommentarzeile

; XDEBUG Extension

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

Apache wird verarbeitet xdebugund Komponist nicht.


4

Zwei Optionen:

1: Fügen Sie dem Initialisierungsskript folgenden Code hinzu:

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

2: Fügen Sie der php.ini das folgende Flag hinzu

 xdebug.remote_autostart=0
 xdebug.remote_enable=0

1. Option wird empfohlen.


4

Finden Sie Ihre PHP.ini und suchen Sie nach XDebug.

Normalerweise ist sein Pfad in Ubuntu

/etc/php5/apache2/php.ini  

Nehmen Sie die folgenden Änderungen vor (am besten kommentieren Sie sie einfach durch Hinzufügen; am Anfang)

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

Starten Sie dann Ihren Server für Ubuntu erneut

sudo service apache2 restart

4

Xdebug deaktivieren

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

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

Dann alles auskommentieren und speichern.


UPDATE - Nur für CLI deaktivieren

Laut @ igoemons Kommentar ist dies eine bessere Methode:

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

Hinweis: Aktualisieren Sie den Pfad zu Ihrer PHP-Version.


Dies ist keine Lösung, da /etc/php/7.0/cli/conf.d/20-xdebug.ini nur ein Symlink ist. Wenn Sie ihn bearbeiten, bearbeiten Sie die Originaldatei, die für cli und non-cli üblich ist. Ich denke, die richtige Lösung ist einfach den Symlink zu löschen.
igoemon

Aktualisierte Antwort ^.
Justin

4

Ubuntu 16.04 entfernt xdebug aus PHP.

Suchen Sie Ihre php.ini-Datei und stellen Sie sicher, dass xdebug vorhanden ist:

grep -r "xdebug" /etc/php/

Dies kann zu unterschiedlichen Versionen führen. Wenn dies der Fall ist php -v, suchen Sie nach Ihrer Version.

Bearbeiten Sie die Datei php.ini wie folgt:

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

Kommentieren Sie die Zeile:

//zend_extension=xdebug.so

Speicher die Datei


Ja, Sie benötigen definitiv den ersten Befehl, um alle (falschen) xdebug-Konfigurationen herauszufinden, die Sie vorgenommen haben. Vielen Dank!
Aaron Liu

4

Wenn Sie php-fpmFolgendes verwenden, sollte Folgendes ausreichen:

sudo phpdismod xdebug
sudo service php-fpm restart

Beachten Sie, dass Sie dies abhängig von Ihrer PHP-Version anpassen müssen. Zum Beispiel würden Sie PHP 7.0 ausführen:

sudo phpdismod xdebug
sudo service php7.0-fpm restart

Da Sie php-fpm ausführen, sollte es nicht erforderlich sein, den eigentlichen Webserver neu zu starten. In jedem Fall, wenn Sie fpm nicht verwenden, können Sie Ihren Webserver einfach mit einem der folgenden Befehle neu starten:

sudo service apache2 restart
sudo apache2ctl restart

3

Ich bin auf ein ähnliches Problem gestoßen. Manchmal finden Sie xdebug.so nicht in php.ini. In diesem Fall führen Sie phpinfo()in einer PHP-Datei und suchen Sie nach Additional .ini files parsed. Hier sehen Sie weitere INI-Dateien. Eine davon ist die INI-Datei von xdebug. Entfernen Sie einfach diese Datei (oder benennen Sie sie um), starten Sie Apache neu und diese Erweiterung wird entfernt.


3

Ich hatte folgendes Problem: Auch wenn ich eingestellt habe

xdebug.remote_enable=0 

Xdebug-Error-Message-Decoration wurde angezeigt.

Meine Lösung:

xdebug.default_enable=0

Nur wenn ich dieses Flag verwende, wurde Xdebug deaktiviert.


3

(Dies ist für CentOS)

Benennen Sie die Konfigurationsdatei um und starten Sie Apache neu.

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

Gehen Sie zum erneuten Aktivieren in umgekehrter Reihenfolge vor.


1

Wenn Sie MAMP Pro unter Mac OS X verwenden, erfolgt dies über den MAMP-Client, indem Sie auf der Registerkarte PHP die Option Xdebug aktivieren deaktivieren :

Deaktivieren von Xdebug in MAMP Pro


1

Also, ja, alles was Sie brauchen, kommentieren Sie einfach die Zeile in der INI-Datei wie zend_extension=xdebug.sooder ähnlich.

Kommentare können durch Hinzufügen eines Semikolons abgegeben werden.

Aber eine solche Antwort wurde bereits hinzugefügt, und ich möchte eine fertige Lösung zum Wechseln des Xdebug-Status freigeben.

Ich habe einen schnellen Umschalter für Xdebug gemacht. Vielleicht wäre es für jemanden nützlich.

Xdebug Switcher


1

Klicken Sie für WAMP mit der linken Maustaste auf das Wamp-Symbol in der Taskleiste. Bewegen Sie den Mauszeiger über PHP und klicken Sie dann auf php.ini und öffnen Sie es in Ihrem Texteditor.

Suchen Sie nun nach der Phrase 'zend_extension' und fügen Sie hinzu; (Semikolon) davor.

Starten Sie den WAMP neu und Sie können loslegen.


1

Apache / 2.4.33 (Win64) PHP / 7.2.4 myHomeBrew-Stack

Am Ende von php.ini verwende ich Folgendes, um Xdebug für die Verwendung mit PhpStorm zu verwalten

; 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

Inspiriert von PHPStorm Rechtsklick auf eine Datei -> Debug -> ...

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

Das Wichtigste ist -dxdebug.remote_enable=0 -dxdebug.default_enable=0


1

Ich habe dieses Bash-Skript zum Umschalten von xdebug erstellt. Ich denke, es sollte zumindest unter Ubuntu / Debian funktionieren. Dies ist für PHP7 +. Verwenden Sie für PHP5 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

Deaktivieren Sie xdebug nur für bestimmte PHP-Versionen oder Sapi. In diesem Fall PHP 7.2 fpm

sudo phpdismod -v 7.2 -s fpm xdebug
sudo service php7.2-fpm nginx restart
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.