禁用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]
调用它,因为phpdismod
和phpenmod
需要根用户。
然而,您不应该在您的主机系统或任何其他不容易恢复和沙箱的环境中这样做,因为以root身份运行composer是潜在的危险(包可以注册在安装和/或更新时运行的脚本,并且您不能信任您需要的每个包)。
编辑:这适用于PHP>= 7。对于php5,将phpdismod
和phpenmod
替换为php5dismod
和php5enmod
(未测试)。
第二次编辑: AFAIK, phpenmod
和phpdismod
只适用于基于Ubuntu/Debian的系统。