折腾:
需要尽量去实现,在Mac中,如何才能实现实时的调试本地Wordpress中插件的PHP代码。
php 实时调试
使用phpstorm+wamp实现php代码实时调试审计 – 行长圈 – wooyun_p | 漏洞银行(BUGBANK) | 全球漏洞悬赏平台
但是都没有截图,感觉不会有假吧?
php realtime debug
debugging – Debug PHP in Real Time – Stack Overflow
phptrace/README_ZH.md at master · Qihoo360/phptrace
看起来就很麻烦。算了。
是Eclipse的远程调试工具,好像支持调试php。
但是我此处不用Eclipse,所以也不去看了。
PHP: Debugging in PHP – Manual
还是只能输出信息了。。
kint-php/kint: Kint – a powerful and modern PHP debugging tool.
看起来还行。
用于替代:var_dump(), print_r() and debug_backtrace().
但是好用多了。抽空去试试。
里面介绍了各种IDE或编辑器对于Xdebug的支持情况,其中最好的是PhpStorm
那就去参考教程去试试
Xdebug & Zend Debugger Bookmarklets Generator – Marklets | PhpStorm
Zero-configuration Web Application Debugging with Xdebug and PhpStorm – PhpStorm – Confluence
Video Tutorials – Documentation | PhpStorm
Configuring PHP Development Environment – Help | PhpStorm
先要去保证,PHP开发环境+XDebug插件已启用
期间也找到供参考的帖子:
How To Setup and Configure PhpStorm, Xdebug, and MAMP for Debugging – Michael Novotny
在 MAC OS X 中配置 PHP、Apache、MySQL 和 Xdebug for PHP 开发 – NetBeans IDE 教程
Cannot Get xdebug working with MAMP on Mac – IDEs Support (IntelliJ Platform) | JetBrains
继续参考上面的:
Xdebug Installation Guide – PhpStorm – Confluence
Validating Your Debugging Configuration – PhpStorm – Confluence
去验证试试
把端口号和地址改为:
http://localhost:8888/wordpress/
Path to create validation script:/Users/crifan/dev/dev_root/crifan.com/mamp/wordpress/
Url to validation script:http://localhost:8888/wordpress/
然后点击验证
好像输出结果是正常了:
那就去给代码加上断点:
看看点击对应页面,是否可以在断点处停下来
会弹框让我确认要调试的文件是否正确:
然后的确可以实时调试啦:
找找,单步进入函数是什么快捷键:
Step Into是F7
Step Over是F8
按了F7后,果然进去sync函数了,然后再次按了个F8,则对应的此处的$wpdb的变量的值,就在后面显示出来了:
真心方便调试啊,非常不错,一万个赞!!!👍👍👍
然后鼠标移动到变量上,可以显示弹框显示实时的值:
注:
虽然此处已经成功调试,但还是参考解释的更清楚的:
How to debug PHP with PHPStorm & MAMP | Code Chewing Guides
去看看:
此处的那个开启监听调试的按钮,已经点击打开了:
【总结】
1.首先确保本地的PHP环境中Xdebug已开启,并且加上了对应的配置
此处是MAMP
(1)首先是去通过设置界面,看到PHP版本是7.1.6
PHP-》Standard version:7.1.6
然后也通过MAMP的phpinfo:
http://localhost:8888/MAMP/index.php?language=English&page=phpinfo
中看到:
extension_dir=/Applications/MAMP/bin/php/php7.1.6/lib/php/extensions/no-debug-non-zts-20160303/
从而到对应路径下:
/Applications/MAMP/bin/php/php7.1.6/lib/php/extensions/no-debug-non-zts-20160303/
也看到了有个xdebug.so
(2)再去MAMP中启用xdebug
找到PHP的配置文件:
/Applications/MAMP/bin/php/php7.1.6/conf/php.ini
把最下面的Xdebug取消注释,加上参数,变成:
[xdebug] zend_extension=”/Applications/MAMP/bin/php/php7.1.6/lib/php/extensions/no-debug-non-zts-20160303/xdebug.so” xdebug.remote_autostart=1 xdebug.remote_enable=1 xdebug.remote_host=localhost xdebug.remote_port=9000 xdebug.remote_handler=dbgp |
重启MAMP,即可在phpinfo中看到Xdebug,确认已启用Xdebug。
2.然后去PHPStorm中点击开启监听后去验证调试是否正常后,即可正常打断点去调试了
(1)PHPStorm右上角有个 手机加上禁止的图标 点击后,即可开启监听端口功能(用于调试)
(2)然后去验证本地调试环境是否已OK
Run-》Web Server Debug Validation-》
此处是调试本地PHP环境,所以选择:Local Web Server or Shared Folder
Path to create validation script:填写本地wordpress所在路径
此处MAMP中wordpress所在路径是:
/Users/crifan/dev/dev_root/crifan.com/mamp/wordpress/
Url to validation script:填写本地wordpress首页地址
本地MAMP中wordpress的首页地址是:
点击Validate后,如果都和我此处一样都是information,则表示都正常了:
(3)加上断点,可以去调试PHP代码了
然后就可以直接用鼠标点击某行的前面(行号的后面,可折叠线前面),去加上断点了。
然后就可以去运行对应的wordpress的页面了。
此时,PHPStorm就会监听到对应的Xdebug传递过来的信息,如果遇到断点的话,
第一次会弹框让你确认要调试的文件路径是否正确,点击确认即可:
之后就可以正常调试了。
关于具体调试的快捷键,可以去Run中找到。
注:
1.其他还有不清楚的,可以参考更加详细的:
How to debug PHP with PHPStorm & MAMP | Code Chewing Guides
2.对于调试远程服务器的话,逻辑是是类似的,估计只需要选择 Remote Web Server,配置合适参数就好了。