XDebugを無効にする方法


124

XDebugをインストールしてからサーバーが遅くなったと思います。したがって、私の仮説をテストするために、XDebugを完全に無効にしたいと思います。これを行う方法についてのチュートリアルを探していましたが、そのような情報が見つかりません。

回答:


163

あなたphp.iniを見つけてXDebug を探してください。

xdebug autostartをfalseに設定します

xdebug.remote_autostart=0  
xdebug.remote_enable=0

プロファイラーを無効にする

xdebug.profiler_enable=0

xdebugを無効にしてロードしてもパフォーマンスが低下する可能性があることに注意してください。拡張機能自体のロードを無効にするには、php.iniでコメントする必要があります。次のようなエントリを見つけます。

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

;コメントを付けるにはa を入れ;zend_extension = …ます。

このポストXDebugをチェックして、単一の.phpファイルのリモートデバッグを無効にする方法を教えてください


ありがとう!私の問題はAPCであり、記憶力は明らかに低いことがわかりました。そうです、xdebugはApacheのモジュールではなく、PHPの一部です。これですべてが正常に動作しています。
Beto Aveiga、2012年

1
@Udayとphp.iniでこれが見つからない場合 / etc / php内のどこでもgrep検索を含めてチェックしました。
Haralan Dobrev 2013

@HaralanDobrev phpinfo()をチェックして、xdebugが実際に有効になっているかどうかを確認します。ある場合は、php.iniファイルに追加のiniファイルが添付されているかどうかを確認してください。さらに、正しいiniファイルを編集していることを確認してください。これらのファイルを複数の場所に置くことができます。
Uday Sawant 2013年

18
@UdaySawant zend_extension=/usr/lib/php5/20090626+lfs/xdebug.soからの行にコメントした後、それを無効にすることができました/etc/php5/conf.d/xdebug.ini。ただし、回答で指定された行内で/usr/lib/php5も行内でも/etc使用できません。
Haralan Dobrev 2013

5
実際には、拡張機能をまったくロードせず、必要な場合にのみロードすることをお勧めします。XDebugは、無効にされている場合でも、実際には速度を大幅に低下させます。Webページを作成するいくつかのスクリプトをデバッグまたはプロファイリングするときに、パフォーマンスがそれほど低下していないように感じるかもしれませんが、デーモンスクリプトを使用すると、多くのことがわかります。なぜそれをまったく読み込まないほうがいいのかについてのブログ投稿を書いたところです。こちらをご覧ください:bit.ly/14SaWpp
thesilentman

99

Ubuntuと同様のLinuxディストリビューションで動作する簡単なソリューション

sudo php5dismod xdebug
sudo service apache2 restart

10
提供するソリューションについてもう少し説明を追加して、回答を詳しく説明していただけませんか?
アバリゾン

3
このコマンドはcentOSではなくubuntu用です。あなただけが同じLinuxディストリビューションを使用しているわけではないので、その説明を提供する必要があります。
MaXi32、2015

1
これはapache2用であり、CLI用ではありません。これらには異なるphp.iniファイルがある可能性があります
Adib Aroui

6
PHPのバージョンによっては、次のように入力する必要があります$ sudo phpdismod xdebug
RousseauAlexandre

2
この回答は、Apacheのmod-phpで使用されているPHPにのみ適用されます。
ジョンハント

35

LinuxのUbuntu多分、別の-それはテストされていない)との分布PHP 5ボード上に、あなたが使用することができます。

sudo php5dismod xdebug

そしてPHP 7で

sudo phpdismod xdebug

その後、サーバーを再起動してください:

sudo service apache2 restart

PHP 7は、iniファイルからxdebugを削除したと思います。だからこの答えは私を助けました。
Keith Holliday

1
PHP7のために働いた。php.iniのxdebug設定をコメントアウトしても機能しませんでした。
Kalob Taulien 2017

1
うまくいきませんでした。警告:モジュールxdebug iniファイルが/etc/php/7.1/mods-availableに存在しません
dxvargas

25

また、xdebug_disable()コードに追加することもできます。試してください:

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


32
これはスタックトレースの表示を無効にするだけで、実際にはxdebug(ひどく名前が付けられた関数、私は知っています)を無効にしません
BlueRaja-Danny Pflughoeft

これは多くの状況に対処するための素晴らしい方法です。それが本当にOPのニーズを満たしていない場合でも、これをありがとう。
ジェイク

3
@ジェイク、私はOPが肉屋を探していたかどうかわかりません。
thephpdev 2016

1
@ジェイク・へへ。とにかく冗談でした。😛
thephpdev

1
@BinarWebの理由は、この関数がxdebug全体を無効にし、パフォーマンスを向上させると人々が考える可能性があるためです。しかし、そうではありません
Fogus

12

私は設定ファイルの名前を変更してサーバーを再起動しました:

$ 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

うまくいきました。


これは私のために働いた、代わりに/etc/php/7.0/fpm/conf.dの/etc/php/7.0/cli/conf.dを除き、
ウィル

これは、Mac OSXのphp 7.2,9またはcentos vagrantでも機能します。xdebug.iniからxdebug.ini.oldなどに名前を変更するだけ
vknyvz 2018

これがチーフです
Micheal C Wallas

10

php.iniのコメント拡張とApacheを再起動します。これは簡単なスクリプトです(ショートカットを割り当てることができます)

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を完全に無効にするには、これが正解です。@ UdaySawantの回答にある私のコメントを参照してください。
thesilentman 2013

8

xubuntuでは、これでCLIのxdebugを完全に無効にしました...

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

注:これは本当に作曲家の更新に役立ちました。パフォーマンスの問題のためにxdebugを無効にする必要があります。
アルティスタン2014年

3
これはララベルホームステッドでも機能します。homestead / laravelでxdebugを無効にするには、ファイルのセクションをコメント化します/etc/php5/cli/conf.d/20-xdebug.ini
ulkas 2014年

passthruxdebugが有効になっている関数を介してターミナルから別のphpスクリプトを実行するターミナルからphpスクリプトを実行すると、xdebugがハングして実行が停止する可能性があることに言及しておきます。
ガーマン2015

1
反対投票の目的がわからない場合、これが他の環境ではなく、CLIのxdebugを無効にする唯一の方法のようです。私が使用したいが、unlink以上のrmことは、利用できる場合。
アンディ

4
私はiniをrm /リンク解除せず、代わりにulkasが提案するようにsudo nano /etc/php/7.0/cli/conf.d/20-xdebug.iniしてコメントアウトします。
Justin

7

Windows(WAMP)のCLI iniファイル:

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

コメント行

; XDEBUG Extension

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

Apacheは処理しxdebug、composer は処理しません。


4

2つのオプション:

1:初期化スクリプトに次のコードを追加します。

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

2:php.iniに次のフラグを追加します

 xdebug.remote_autostart=0
 xdebug.remote_enable=0

最初のオプションをお勧めします。


4

PHP.iniを見つけて、XDebugを探します。

通常Ubuntuでは、そのパスは

/etc/php5/apache2/php.ini  

以下の変更を行います(最初に;を追加してコメントするだけの方が良いです)。

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

その後、Ubuntuでサーバーを再起動します

sudo service apache2 restart

4

xdebugを無効にする

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

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

次に、すべてをコメントアウトして保存します。


UPDATE-CLIのみ無効にする

@igoemonのコメントによると、これはより良い方法です:

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

注:PHPのバージョンへのパスを更新します。


/は解決策ではありません。/etc/php/7.0/cli/conf.d/20-xdebug.iniは単なるシンボリックリンクであり、それを編集する場合は、cliおよびnon-cliに共通の元のファイルを編集します。私は正しい解決策はシンボリックリンクを削除することだと思います。
igoemon 2016

回答を更新しました^。
ジャスティン

4

Ubuntu 16.04は、PHPからxdebugを削除します。

php.iniファイルを見つけて、xdebugが存在することを確認します。

grep -r "xdebug" /etc/php/

異なるバージョンが考えられる場合は、実行php -vしてバージョンを確認してください。

次のようにphp.iniファイルを編集します。

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

行にコメントします。

//zend_extension=xdebug.so

ファイルを保存します


はい、間違いなく、実行したすべての(間違った)xdebug構成を見つける最初のコマンドが必要です。ありがとう!
アーロン・リュー

4

あなたが使用しphp-fpmている場合、以下で十分です:

sudo phpdismod xdebug
sudo service php-fpm restart

phpのバージョンによっては、これを微調整する必要があることに注意してください。たとえば、php 7.0を実行している場合は、次のようにします。

sudo phpdismod xdebug
sudo service php7.0-fpm restart

php-fpmを実行しているため、実際のウェブサーバーを再起動する必要はありません。いずれの場合でも、fpmを使用しない場合は、以下のコマンドのいずれかを使用してWebサーバーを再起動するだけです。

sudo service apache2 restart
sudo apache2ctl restart

3

私は同様の問題に遭遇しました。php.iniでxdebug.soが見つからない場合があります。その場合phpinfo()は、phpファイルで実行してを確認してくださいAdditional .ini files parsed。ここには、さらに多くのiniファイルが表示されます。これらの1つはxdebugのiniファイルです。このファイルを削除(または名前を変更)し、Apacheを再起動すると、この拡張機能が削除されます。


3

次の問題がありました:設定しても

xdebug.remote_enable=0 

Xdebug-Error-Message-Decorationが表示されました。

私の解決策:

xdebug.default_enable=0

このフラグを使用した場合にのみ、Xdebugが無効になりました。


3

(これはCentOS用です)

設定ファイルの名前を変更して、Apacheを再起動します。

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

逆にして再度有効にします。



1

だから、ええ、必要なものはすべて、INIファイルのコメント行にzend_extension=xdebug.so似ています。

コメントはセミコロンを追加することで作成できます。

しかし、そのような答えはすでに追加されており、Xdebugステータスを切り替えるための準備ができたソリューションを共有したいと思います。

Xdebugのクイックスイッチャーを作成しました。多分それは誰かのために役立つでしょう。

Xdebugスイッチャー


1

WAMPの場合は、タスクバートレイのWampアイコンを左クリックします。PHPにカーソルを合わせてphp.iniをクリックし、texteditorで開きます。

次に、「zend_extension」というフレーズを検索して、を追加します。(セミコロン)その前。

WAMPを再起動すれば準備完了です。


1

Apache / 2.4.33(Win64)PHP / 7.2.4 myHomeBrewスタック

php.iniの最後で、PhpStormで使用するXdebugを管理するために以下を使用します

; 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に触発されたファイルを右クリック->デバッグ-> ...

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

重要なものは -dxdebug.remote_enable=0 -dxdebug.default_enable=0


1

xdebugを切り替えるために、このbashスクリプトを作成しました。少なくともUbuntu / Debianでは機能するはずです。これはPHP7 +用です。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

特定のPHPバージョンまたはsapiに対してのみxdebugを無効にします。この場合、PHP 7.2 fpm

sudo phpdismod -v 7.2 -s fpm xdebug
sudo service php7.2-fpm nginx restart
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.