關閉 Xdebug 加速 Composer

Xdebug 是 PhpStorm debug 的必備工具,但是啟動 Xdebug 又會使 Composer 變慢,實務上很兩難,這個問題在 PhpStorm 2016.2 得到完美解決,平時不用開啟 Xdebug,PhpStorm 會在需要 debug 時才自動啟動 Xdebug,不會影響 Composer 執行速度。

Motivation


Composer 在某一個版本以後,只要在 php.ini 有啟動 Xdebug,就會出現以上黃色警告訊息。

主要是 Xdebug 會大幅影響 Composer 解析套件相依時的執行速度,因此不建議你開啟 Xdebug。

在之前並沒好的解法,除非你不使用 Xdebug,但 Xdebug 又是 PhpStorm 的大絕,也只好犧牲 Composer 了。

Version


PHP 7.0.8
MAMP PRO 3.5.2
PhpStorm 2016.2

設定 Xdebug On Demand


本文以 MAMP PRO 為例,在 PhpStorm 設定 Xdebug on Demand。

PhpStorm -> Preferences -> Languages & Frameworks -> PHP

  • PHP Language level : 選擇 7
  • Interpreter : 按 ... 設定 PHP interpreter。

+ 新增 PHP interpreter,因為以 MAMP PRO 為例,選擇 Other Local...

  • Name : 輸入 PHP 7
  • PHP executable : 選擇 PHP interpreter 所在路徑,以 MAMP PRO 為例,其路徑為 /Applications/MAMP/bin/php/php7.0.8/bin/php。注意此時 php.ini 並沒有啟動 xdebug.so,所以顯示 Debugger: Not installed
  • Debugger extension : 選擇 xdebug.so 所在路徑,以 MAMP PRO 為例,其路徑為 /Applications/MAMP/bin/php/php7.0.8/lib/php/extensions/no-debug-non-zts-20151012/xdebug.so

設定好了之後,就可以選擇剛剛設定的 PHP7

在單元測試中設定中斷點,按熱鍵 ⌃ + ⇧ + D,程式碼依舊會在中斷點停止,所有變數也可以正常顯示。

由於沒有在 php.ini 啟動 xdebug.so,Composer 再也不會抱怨 Xdebug 已經啟動,可以全速執行。

Conclusion


  • Xdebug 與 Composer 一直是無解的問題,透過 PhpStorm 2016.2,我們終於可以兼顧 Xdebug 的便利與 Composer 的速度。

Reference