我无法禁用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
答案 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]
进行调用,因为phpdismod
和phpenmod
需要root。
但是,您应该不在主机系统上执行 或任何其他不易恢复和沙盒化的环境,因为以root身份运行composer是有潜在危险的(Packages可以注册在安装和/或更新时运行的脚本,并且您不能信任您需要的每个包。)
修改强>
这适用于PHP> = 7.对于PHP 5,将phpdismod
和phpenmod
替换为php5dismod
和php5enmod
(未经测试)。
第二次修改: AFAIK,phpenmod
和phpdismod
仅适用于基于Ubuntu / Debian的系统。