composer 對 phper 來講是個福音,但有時,他也會給咱們一些小麻煩,好比下面這個報錯:php
You are running composer with xdebug enabled. This has a major impact on runtime performance. See https://getcomposer.org/xdebugredis
這是一個很是常見的衝突,並且這個衝突對 composer 運行的影響仍是蠻大的,當咱們啓用 Xdebug 功能時,將使得咱們的 composer 運行放慢 3-4 倍。換句話說:xdebug 對咱們程序調試來講很是重要,但對 composer 來講卻增長了內存佔用和進程時間。shell
composer 官網給出了解決方案瀏覽器
下面我講講個人排錯思路。composer
首先,這確定是一個由於啓用了 Xdebug 致使的衝突,咱們要找到在哪裏啓用了 Xdebug。函數
寫一個包含 phpinfo()
函數的頁面,在瀏覽器中打開。this
配置參數 | 值 |
---|---|
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
用分號註釋掉調用語句:debug
;zend_extension = "/path/to/my/xdebug.so"
若是 Xdebug 的調用不在主配置文件 php.ini 中,那麼有可能在擴展配置文件夾中,好比個人環境就是如此,見上圖表:
咱們能夠將 conf.d/ext-xdebug.ini
重命名爲 ext-xdebug.bak
或者刪除。這樣 php 服務重啓就不會調用了。當面,咱們也能夠參照上面的步驟,在 conf.d/ext-xdebug.ini
中將相應的 Xdebug 語句註釋掉,效果相同。調試
設置別名的須要瞭解你本身在哪一個 shell 環境下,個人機子用的是 zsh ,因此編輯 .zshrc 這個文件便可。
➜ ~ cd ➜ ~ vi .zshrc
而後根據下面兩種狀況選擇一種方式設置你的別名,或者設置兩個別名。
對於 Xdebug 調用在 php.ini 中的狀況,咱們能夠經過複製一份不含 Xdebug 的配置文件(xdebug-disabled-php.ini),而後創建如下別名:
alias comp='php -c /path/to/xdebug-disabled-php.ini /path/to/composer.phar'
這種方式能夠解決像我同樣已經將一些擴展配置路徑編譯進 php 的狀況:
# Without php.ini alias comp='php -n /path/to/composer.phar'
/path/to 爲你實際的文件或命令路徑
OK ,如今咱們執行 composer -V
試試,是否還有錯誤提示出現。
Good,完美解決。