解决 Composer 运行时的 Xdebug 冲突

composer 对 phper 来讲是个福音,但有时,他也会给咱们一些小麻烦,好比下面这个报错:php

You are running composer with xdebug enabled. This has a major impact on runtime performance. See https://getcomposer.org/xdebugredis

clipboard.png

这是一个很是常见的冲突,并且这个冲突对 composer 运行的影响仍是蛮大的,当咱们启用 Xdebug 功能时,将使得咱们的 composer 运行放慢 3-4 倍。换句话说:xdebug 对咱们程序调试来讲很是重要,但对 composer 来讲却增长了内存占用和进程时间。shell

composer 官网给出了解决方案浏览器

下面我讲讲个人排错思路。composer

方法1:经过 php 配置文件,全局禁用 Xdebug。

首先,这确定是一个由于启用了 Xdebug 致使的冲突,咱们要找到在哪里启用了 Xdebug。函数

写一个包含 phpinfo() 函数的页面,在浏览器中打开。this

clipboard.png

配置参数
Configuration File (php.ini) Path /usr/local/etc/php/5.6
Loaded Configuration File /usr/local/etc/php/5.6/php.ini
Scan this dir for additional .ini files /usr/local/etc/php/5.6/conf.d
Additional .ini files parsed /usr/local/etc/php/5.6/conf.d/ext-igbinary.ini, /usr/local/etc/php/5.6/conf.d/ext-mcrypt.ini, /usr/local/etc/php/5.6/conf.d/ext-redis.ini, /usr/local/etc/php/5.6/conf.d/ext-xdebug.ini

可见 php 调用了 php.ini 配置文件和 conf.d 目录里面的全部 ini 配置文件。spa

禁用 php.ini 中的 "xdebug" 模块

用分号注释掉调用语句:debug

;zend_extension = "/path/to/my/xdebug.so"

去除 Xdebug 相关的配置文件

若是 Xdebug 的调用不在主配置文件 php.ini 中,那么有可能在扩展配置文件夹中,好比个人环境就是如此,见上图表:
咱们能够将 conf.d/ext-xdebug.ini 重命名为 ext-xdebug.bak 或者删除。这样 php 服务重启就不会调用了。当面,咱们也能够参照上面的步骤,在 conf.d/ext-xdebug.ini 中将相应的 Xdebug 语句注释掉,效果相同。调试

方法2:经过给 composer 设置别名防止调用 Xdebug

设置别名的须要了解你本身在哪一个 shell 环境下,个人机子用的是 zsh ,因此编辑 .zshrc 这个文件便可。

➜  ~ cd
➜  ~ vi .zshrc

而后根据下面两种状况选择一种方式设置你的别名,或者设置两个别名

调用不含 Xdebug 模块的配置文件

对于 Xdebug 调用在 php.ini 中的状况,咱们能够经过复制一份不含 Xdebug 的配置文件(xdebug-disabled-php.ini),而后创建如下别名:

alias comp='php -c /path/to/xdebug-disabled-php.ini /path/to/composer.phar'

不调用任何 php 配置文件

这种方式能够解决像我同样已经将一些扩展配置路径编译进 php 的状况

# Without php.ini
alias comp='php -n /path/to/composer.phar'

/path/to 为你实际的文件或命令路径


OK ,如今咱们执行 composer -V 试试,是否还有错误提示出现。

clipboard.png

Good,完美解决。

相关文章
相关标签/搜索