42
Help us understand the problem. What are the problem?

posted at

updated at

必要な時にのみxdebugをオン

xdebugを使用したPHPの実行はとても低速です。本来、xdebugが必要なのはテストカバレッジやプロファイル取得、トレースなどを行うデバック実行の時のみです。

必要な時にのみxdebugをオンにして、普段はxdedug無しでPHP実行する方法を紹介します。

xdebugをオフ

普段はオフにします。php --iniでxdebug.iniの場所を調べコメントアウト。

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

テストカバレッジ

カバレッジの計測はxdebugよりPhpdbgが、Phpdbgよりpcovが高速です。

pcovインストール方法

テストカバレッジを取るときのcomposerコマンドをcomposer.jsonに追記。pcovとxdebugでの実行を併記することで異なる環境でカバレッジ取得方法が選べます。

{
    "scripts" :{
        "pcov": ["php -d pcov.enabled=1 ./vendor/bin/phpunit --coverage-text --coverage-html=build/coverage --coverage-clover=coverage.xml"],
        "coverage": ["php -dzend_extension=xdebug.so ./vendor/bin/phpunit --coverage-text --coverage-html=build/coverage --coverage-clover=coverage.xml"],
    }
}

phpunit.xml.distの<logging>の項目はphpunitのみ実行した時にxdebugが読み込まれてないという警告が出て流ので削除します。<logging>の項目を削除します。

実行はcomposerコマンドで行います。

pcovの場合

composer pcov

xdebugの場合

composer coverage

PhpStorm

PhpStormでデバッガーを使ってブレイクやステップトレースにするためにxdebug.soを読み込む設定にします。

Language & Frameworks > ... > PHP > CLI Interpreter > "..." でCLI Interpreter画面を表示してDebugger extensionに xdebug.so (必要ならフルパスで)を入力します。

スクリーンショット 2020-09-05 11.28.42.png

Debuggerにバージョン番号が出れば認識されています。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Sign upLogin
42
Help us understand the problem. What are the problem?