2016/07/19

[PHP] XDebug 之愛恨糾結設定

XDebug 在跑測試時需要, 要跑 Code Coverage 時也需要, 唯獨在一個情況下是希望關閉的, 就是執行 Composer 的時候

但是 Composer 對於 PHP 的專案來說, 又是扮演著超級重要的角色, 但若是 XDebug 開啟又會造成它的效率不佳的問題



在試過無數種的方法後, 目前覺得最佳的方案是用 Command Alias 是最簡單的

XDebug 在 php.ini 的設定


php.ini 的 [xdebug] 設定區塊照舊, 完全保留設定, 也就是預設是啟用 XDebug

[xdebug]
zend_extension="/path/to/php_xdebug.so"
xdebug.remote_enable=1
xdebug.remote_autostart=1

專為 Composer 而設定的命令


Composer 網站也提供了幾個方式: Xdebug impact on Composer

在此我採用指定不包含 xdebug 的 php.ini 設定的方式來執行 composer
(在此另命名為 xdebug-disabled-php.ini)

在執行 composer 仍會需要 openssl, 所以還是需要額外指定 php 的設定檔

Mac - Bash 設定


Mac 上可以放在 ~/.bash_profile, 或是另開 ~/.bash_aliases 統一管理

1. 不用 php.ini 設定

alias cps='php -n /usr/local/bin/composer.phar'

2. 設定指定的 php.ini 檔案路徑 (不包含 Xdebug 設定)

alias cps='php -c /path/to/xdebug-disabled-php.ini /usr/local/bin/composer.phar'


[更新: Mac 可直接不採用 php.ini 設定檔建立專案而不報錯 (因已有 openssl 內建)]

Windows - PowerShell 設定


在 %USERPROFILE%/profile.ps1 加上

function RunComposer { Invoke-Expression "php -c C:\php\xdebug-disabled-php.ini C:\php\composer.phar $args" }
Set-Alias cps RunComposer

[注意: Windows 一定要設定 xdebug-disabled-php.ini 的路徑]


執行結果


命令只要打上 cps 就等同於執行 php composer ... 卻又沒有 XDebug 的糾結困擾
而且指令簡短許多, 又可依自己喜歡的命名方式來取




沒有留言: