解決 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,完美解決。

相關文章
相關標籤/搜索