Open5
【Laravel】tinker実行時Xdebugのブレークポイントで止めたい
表題の通りで、既存の設定ではブラウザやPostmanではブレークポイントで止まるがtinkerからdispatch()実行すると処理が止まらなかった。なぜ?
CLI用の設定が必要か?
動作環境:
- MacM1
- VScode
- PHP Debug
- Dockerコンテナ(Alpine Linux)
- PHP8.1
- Laravel10
- Xdebug v3
2時間ほど格闘して、結論だけ書く👇
.vscode/launch.json
{
"version": "0.2.0",
"configurations": [
{
"name": "Listen for Xdebug",
"type": "php",
"request": "launch",
"port": 9003,
"runtimeArgs": [
"-dxdebug.start_with_request=yes"
],
"pathMappings": {
"/var/www/html": "${workspaceFolder}"
},
"env": {
"XDEBUG_MODE": "debug,develop",
"XDEBUG_CONFIG": "client_host=host.docker.internal client_port=9003"
}
},
]
}
php.ini(開発環境用)
log_errors=On
memory_limit=2048M
post_max_size=561M
upload_max_filesize=11M
max_input_vars = 32000
max_multipart_body_parts = 32000
max_file_uploads = 2000
expose_php = Off
max_execution_time = 300
[opcache]
zend_extension = opcache.so
opcache.enable = 1
opcache.enable_cli = 1
opcache.memory_consumption = 256
opcache.interned_strings_buffer = 8
opcache.max_accelerated_files = 100000
opcache.validate_timestamps = 1
opcache.revalidate_freq = 0
[xdebug]
xdebug.client_host = host.docker.internal
xdebug.start_with_request = yes
xdebug.mode = debug
xdebug.client_port = 9003
xdebug.discover_client_host = 0
xdebug.remote_handler = "dbgp"
xdebug.log = /var/log/xdebug.log
設定重複していそうだけどまあよし。
tinker検証
...
class User ← ブレークポイント設置
{
...
tinker起動
php artisan tinker
> $user = App\Models\User::find(1);
はい、止まりました!
これでジョブの処理でもブレークポイントを利用してデバッグできるようになったので快適。