无法为Composer

时间:2016-10-11 09:50:38

标签: php composer-php xdebug php-7

我无法禁用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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

IF 你是 - 像我一样 - 在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是有潜在危险的(Packages可以注册在安装和/或更新时运行的脚本,并且您不能信任您需要的每个包。)

修改 这适用于PHP> = 7.对于PHP 5,将phpdismodphpenmod替换为php5dismodphp5enmod(未经测试)。

第二次修改: AFAIK,phpenmodphpdismod仅适用于基于Ubuntu / Debian的系统。