Lately, i start new job with Magento, and while setup IDE for project i face problem with Xdebug, PhpStorm and Docker. It took me a lot of hours to find out and make it work. So i write this post to save some step for you guys also me some way to solve the stuck when we got.
1. How Xdebug work:
Link i founded this article with quite easy understand explanation how xdebug work, so spend some minutes to read it, we need to understans the thing we do to easy to solve it.
2: Define Xdebug is installed on server:
And with phpinfo()
If you dont see it showed, it mean you have not installed it or it not enable
Checking if you have enable extension from your php ini.
Or if you have not installed it, consider its document: Link.
3. Now if you make sure xdebug installed but your break point at PhpStorm not break, continue these steps:
In phpinfo(), make sure xdebug.remote_enable is On cause you are using docker container, also checking xdebug.remote_host and xdebug.remote_port is right config your local machine.
ALso make sure you can curl host.docker.internal:9000, If not, maybe your container dont understand that domain, sometime happend when using docker compose, so add host.docker.internal to your /etc/hosts map it with the docker network ip, you can try ifconfig on your local machine i similar here:
docker0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 172.17.0.1 netmask 255.255.0.0 broadcast 172.17.255.255
inet6 fe80::42:55ff:fee7:c69c prefixlen 64 scopeid 0x20<link>
ether 02:42:55:e7:c6:9c txqueuelen 0 (Ethernet)
RX packets 71293 bytes 5295130 (5.2 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 157731 bytes 357009921 (357.0 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
Other way to debug is watching log, make sure when you request xdebug from browser or PhpStorm, it generate a log at that path, if you dont see the log, it mean you xdebug cant connect to your browser
xdebug.remote_log | /tmp/xdebug.log |
Make sure you dont add the folder you are debugging to exlusive, in my case with phpstorm, i added the vendor folder to exclusive so when i my debug step into that folder, it return 502 or blank page.
You can try to use php script to check xdebug working, it will generate script run directly from cli instead from browser.
[docker-compose://[/home/www/Sites/project/docker/docker-compose.override.yml]:phpfpm/]:php -dxdebug.remote_enable=1 -dxdebug.remote_mode=req -dxdebug.remote_port=9000 -dxdebug.remote_host=172.17.0.1 /var/www/html/bin/debug
And finally some config i use in php.ini:
xdebug.idekey = PHPSTORM
xdebug.client_port="9000"
xdebug.remote_log="/tmp/xdebug.log"
xdebug.remote_enable=1
xdebug.remote_host="host.docker.internal"
4. If you got error when use step over with phpstorm and xdebug, this is the answer:
It took me a lot of hours to find out. The issue is describe in these link:
To solve this issue: If on 2022.2, in Settings (Preferences) | PHP | Debug please disable Enable 'toString' object view.
Above is some steps i walk through to make my xdebug working with PhpStorm and Docker. Hope it can help you guys figure out your issue.
Thanks for your reading.
Nhận xét
Đăng nhận xét