【问题标题】:Can't disable xDebug for Composer无法为 Composer 禁用 xDebug
【发布时间】:2017-02-19 20:09:55
【问题描述】:

我无法禁用 xDebug。我已按照建议 here

将配置文件中的 zend_extension 注释掉

/etc/php/7.0/apache2/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 时仍然收到以下错误消息。

您正在运行启用了 xdebug 的 composer。这有很大的影响 关于运行时性能。见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

【问题讨论】:

  • 您需要重新启动 Apache。 $ sudo service apache2 restart PHP 作为 Apache 模块运行。
  • 不,你没有。命令行上的 PHP 不需要重启(除非你正在运行 fpm)。
  • zend_extension=xdebug.so 仍处于启用状态,因此可能仍会加载。
  • @Farkie,就是这样,谢谢

标签: php composer-php xdebug php-7


【解决方案1】:

如果你 - 和我一样 - 在 dev-VM 中工作,你始终是 root,你可以将以下代码添加到你的 .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
}

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

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

编辑: 这适用于 PHP >= 7。对于 PHP 5,请将 phpdismodphpenmod 替换为 php5dismodphp5enmod(未经测试)。

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 仅仅链接到不同的问题并不能很好地回答。我建议查看tips for writing a good answer.。如果您只是想参考一些信息,不妨在评论中进行。
    猜你喜欢
    • 2021-03-20
    • 2021-10-01
    • 1970-01-01
    • 2016-12-02
    • 1970-01-01
    • 2019-09-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多