无法为作曲家禁用 xDebug



禁用xDebug有问题。我已经按照这里的建议从配置文件中注释掉了zend_extension

/etc/php/7.0/输入/conf.d/20-xdebug.ini

zend_extension=xdebug.so
;zend_extension=/usr/lib/xdebug/modules/xdebug.so
xdebug.max_nesting_level=200
xdebug.remote_enable=1
xdebug.remote_host=192.168.10.1
xdebug.idekey=phpstorm

重新启动Apache2后,当我运行composer时,我仍然得到以下错误信息:

您正在运行composer与xdebug启用。这产生了重大影响关于运行时性能。见https://getcomposer.org/xdebug

我发现了另一个xdebug.ini文件,它似乎也被禁用了:

cat /etc/php/7.0/mods-available/xdebug.ini
zend_extension=xdebug.so
;zend_extension=/usr/lib/xdebug/modules/xdebug.so
xdebug.max_nesting_level=200
xdebug.remote_enable=1
xdebug.remote_host=192.168.10.1
xdebug.idekey=phpstorm

我需要重新启动PHP,我该怎么做?

$ sudo service php restart
php: unrecognized service

你可以在这里找到同样的答案…disabling-xdebug-when-running-composer

如果你像我一样在dev-VM中工作,你总是根用户,你可以在你的.bashrc中添加以下代码,以便在运行composer时暂时禁用XDebug:

# Composer WITHOUT XDebug
composer(){
    xdbEnabled=$(php -r 'echo extension_loaded('xdebug');')
    hasBeenDisabled='0' # not needed, just for clarification and better readability
    if [ $xdbEnabled == '1' ]
        then
            echo 'XDebug is enabled. Disabling temporarily.'
            phpdismod xdebug
            hasBeenDisabled='1'
    fi
    php /path/to/composer.phar "$@" # or just 'composer "$@"', if it is installed globally
    if [ $hasBeenDisabled == '1' ]
        then
            phpenmod xdebug
            echo 'XDebug has been reenabled.'
    fi
}

如果您不是根用户,则必须使用sudo composer [args]调用它,因为phpdismodphpenmod需要根用户。

然而,您不应该在您的主机系统或任何其他不容易恢复和沙箱的环境中这样做,因为以root身份运行composer是潜在的危险(包可以注册在安装和/或更新时运行的脚本,并且您不能信任您需要的每个包)。

编辑:

这适用于PHP>= 7。对于php5,将phpdismodphpenmod替换为php5dismodphp5enmod(未测试)。

第二次编辑: AFAIK, phpenmodphpdismod只适用于基于Ubuntu/Debian的系统。

相关内容

  • 没有找到相关文章

最新更新