我认为自从安装XDebug之后,我的服务器就变慢了。因此,为了检验我的假设,我想完全禁用XDebug。我一直在寻找有关如何执行此操作的教程,但找不到此类信息。
我认为自从安装XDebug之后,我的服务器就变慢了。因此,为了检验我的假设,我想完全禁用XDebug。我一直在寻找有关如何执行此操作的教程,但找不到此类信息。
Answers:
查找您的内容php.ini
并寻找XDebug。
将xdebug自动启动设置为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 = …
。
zend_extension=/usr/lib/php5/20090626+lfs/xdebug.so
从/etc/php5/conf.d/xdebug.ini
。但是,答案中指定的行/usr/lib/php5
和/etc
行均不可用。
在类似于Ubuntu的Linux发行版上工作的简单解决方案
sudo php5dismod xdebug
sudo service apache2 restart
$ sudo phpdismod xdebug
另外,您可以添加xdebug_disable()
到代码中。尝试:
if(function_exists('xdebug_disable')) { xdebug_disable(); }
我重命名了配置文件并重新启动了服务器:
$ 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
它确实为我工作。
在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');
在xubuntu中,我完全禁用xdebug的CLI与此...
sudo rm /etc/php5/cli/conf.d/*xdebug*
/etc/php5/cli/conf.d/20-xdebug.ini
passthru
启用xdebug的功能从终端运行另一个php脚本,则xdebug可能会挂起并停止执行。
unlink
了rm
,如果它是可用的。
sudo nano /etc/php/7.0/cli/conf.d/20-xdebug.ini
并注释掉它。
在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则不会。
找到您的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版本。
如果您使用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,因此无需重新启动实际的Web服务器。无论如何,如果您不使用fpm,则可以使用以下任何命令重新启动Web服务器:
sudo service apache2 restart
sudo apache2ctl restart
如果您在Mac OS X上使用MAMP Pro,则可以通过MAMP客户端取消选中PHP选项卡下的Activate Xdebug来完成:
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
我创建了这个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