本地環境
- windows10
- php8.2 nts
- xdebug v3
- thinkphp v8
下載Xdebug
Xdebug下載地址
從xdebug下載地址,下載最新的xdebug,解壓后將php_xdebug.dll放入php目錄的ext目錄下
配置php.ini
[Xdebug]
zend_extension = php_xdebug
xdebug.client_host = 127.0.0.1
xdebug.client_port = 9003
xdebug.mode = debug,coverage
xdebug.start_with_request = yes
xdebug.idekey=VSCODE
安裝擴展
配置launch.json
{// 使用 IntelliSense 了解相關屬性。// 懸停以查看現有屬性的描述。// 欲了解更多信息,請訪問: https://go.microsoft.com/fwlink/?linkid=830387"version": "0.2.0","configurations": [{"name": "Launch built-in server and debug","type": "php","request": "launch","runtimeArgs": ["-S","localhost:8000","-t","."],"port": 9003,"serverReadyAction": {"action": "openExternally"}},{"name": "Debug current script in console","type": "php","request": "launch","program": "${file}","cwd": "${fileDirname}","externalConsole": false,"port": 9003},{"name": "Listen for Xdebug","type": "php","request": "launch","port": 9003}]
}
運行調試
配合單元測試
安裝phpunit
composer require phpunit/phpunit --dev
因為我用的是tp8,單元測試bootstrap需要啟動tp的容器,所以安裝一下我的擴展bingher/think-test
composer require bingher/think-test --dev
安裝PHPUnit Test Explorer
擴展配置
"phpunit.command": "php",
"phpunit.phpunit": "vendor/bin/phpunit",
"phpunit.showAfterExecution": "always",
"phpunit.debuggerConfig": "Listen for Xdebug",
"phpunit.xdebugPort": 9003
重點是phpunit.command,phpunit.phpunit,我原來僅配置phpunit.phpunit: vendor/bin/phpunit.bat 發現擴展執行了一直在轉圈圈,調試模式報錯:?Error: spawn -dxdebug.mode=debug ENOENT at Process.ChildProcess._handle.onexit (node:internal/child_process:285:19) at onErrorNT (node:internal/child_process:483:16) at processTicksAndRejections (node:internal/process/task_queues:82:21)
根據以上配置后PHPUnit Test Explorer順利運行
phpunit.xml
<phpunit colors="true" verbose="true" bootstrap="./vendor/bingher/think-test/src/init.php"><coverage cacheDirectory="./runtime/phpunit/" pathCoverage="true"><include><directory suffix=".php">./app/</directory></include><report><html outputDirectory="./runtime/phpunit/" lowUpperBound="50" highLowerBound="90"/></report></coverage><testsuites><testsuite name="test"><directory>tests</directory></testsuite></testsuites>
</phpunit>
phpunit.xml可以參考phpunit官網進行配置.
如果沒有安裝bingher/think-test, 可以不用配置bootstrap