如何禁用 XDebug

我认为自从安装了 XDebug 之后,我的服务器变慢了。 因此,为了验证我的假设,我想完全禁用 XDebug。 我一直在寻找如何做到这一点的教程,但我找不到这样的信息。

232806 次浏览

找到 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"

然后放一个 ;来注释它,例如 ;zend_extension = …

看看这篇文章 XDebug,如何禁用单个.php 文件的远程调试?

此外,还可以将 xdebug_disable()添加到代码中。请尝试:

{ xdebug _ ability () ; }

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

两个选择:

1: 在初始化脚本中添加以下代码:

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

2: 向 php.ini 添加以下标志

 xdebug.remote_autostart=0
xdebug.remote_enable=0

建议使用第一种方法。

在 xubuntu 中,我完全禁用了 CLI 的 xdebug。

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

我也遇到过类似的问题。有时候,在 php.ini 中找不到 xdebug. so。在这种情况下,在 php 文件中执行 phpinfo()并检查 Additional .ini files parsed。这里您将看到更多的 ini 文件。其中之一将是 xdebug 的 ini 文件。只要删除(或重命名)这个文件,重新启动 apache,这个扩展名就会被删除。

在类似于 Ubuntu 的 Linux 发行版上使用的简单解决方案

sudo php5dismod xdebug
sudo service apache2 restart

我有以下问题: 即使我设置

xdebug.remote_enable=0

显示了 Xdebug-错误-消息-装饰。

我的解决办法是:

xdebug.default_enable=0

只有当我使用这个 Flag 时,Xdebug 才会被禁用。

CLI ini 文件中的 Windows (WAMP) :

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,而作曲家不会。

如果你在 Mac OS X 上使用 MAMP Pro,你可以通过 MAMP 客户端在 PHP选项卡下取消选中 激活 Xdebug:

Disabling Xdebug in MAMP Pro

我重命名了配置文件并重新启动了服务器:

$ 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

对我确实有用。

(这是针对 CentOS 的)

重命名配置文件并重新启动 apache。

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

执行相反的操作以重新启用。

找到您的 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

禁用 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

然后注释掉所有内容并保存。


更新——仅对 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 版本的路径。

在带有 PHP5Linux Ubuntu(也许还有另一个,没有经过测试)发行版中,您可以使用:

sudo php5dismod xdebug

还有 PHP 7

sudo phpdismod xdebug

然后,请重启服务器:

sudo service apache2 restart

所以,是的,所有你需要的,只是注释行 INI 文件像 zend_extension=xdebug.so或类似的。

可以通过添加分号进行注释。

但是,这样的答案已经添加了,我想分享切换 Xdebug 状态的现成解决方案。

我已经为 Xdebug 做了一个快速切换器,也许对某些人会有用。

Xdebug 转换器

对于 WAMP,单击左键单击任务栏托盘中的 WAMP 图标。将鼠标悬停在 PHP 上,然后单击 PHP.ini 并在 textteditor 中打开它。

现在,搜索短语‘ zend _ extension’并在其前面添加; (分号)。

重新启动 WAMP 就可以了。

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

保存文件

如果你使用的是 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,所以不需要重新启动实际的 webserver。在任何情况下,如果你不使用 fpm,那么你可以简单地重新启动你的网络服务器使用以下任何命令:

sudo service apache2 restart
sudo apache2ctl restart

Apache/2.4.33(Win64) PHP/7.2.4 myHomeBrew 栈

在 php.ini 的末尾,我使用以下代码来管理 Xdebug,以便与 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

启发由 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

我创建了这个 bash 脚本来切换 xdebug。我认为它至少应该在 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

仅对某些 PHP 版本或 sapi 禁用 xdebug。 在这种情况下,PHP 7.2 fpm

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

对于那些有兴趣在代码中禁用它的人,在运行测试之前运行这个脚本:

rm -f /home/rof/.phpenv/versions/$(phpenv version-name)/etc/conf.d/xdebug.ini

我收到了这个错误:

Use of undefined constant XDEBUG_CC_UNUSED - assumed 'XDEBUG_CC_UNUSED' (this will throw an Error in a future version of PHP)

现在都没了!

自从 xdebug 3问世以来,pnp.ini中的设置略有改变。 场景:

xdebug.mode=off

将禁用所有 正在处理根据文件:

没有启用任何东西。 Xdebug 除了检查 功能已启用。如果希望接近0,请使用此设置 在头顶上。

可以使用 -d标志在运行时禁用 PHP CLI 上的 Xdebug:

php -d xdebug.mode=off -i | grep xdebug.mode

结果: xdebug.mode => off => off

例如,在禁用 Xdebug 的情况下运行单元测试,所以速度更快:

php -d xdebug.mode=off ./vendor/bin/phpunit

您还可以为它创建一个别名,使其更易于使用。