Xdebug

2 下载xdebug



wget https://xdebug.org/files/xdebug-2.7.2.tgz
3 解压



tar -xf xdebug-2.7.2.tgz
4 建立外挂模块



cd xdebug-2.7.2
/usr/local/php/bin/phpize
5 configure



./configure –enable-xdebug –with-php-config=/usr/local/bin/php-config
6 编译



make



In file included from /Users/didi/PhpstormProjects/c/php-src/ext/xdebug/xdebug-2.9.6/xdebug.c:51:
./php_xdebug.h:147:2: error: unknown type name ‘zif_handler’
zif_handler orig_var_dump_func;
^
./php_xdebug.h:148:2: error: unknown type name ‘zif_handler’
zif_handler orig_set_time_limit_func;



https://xdebug.org/docs/install
https://xdebug.org/download#releases
https://github.com/xdebug/xdebug



git clone https://github.com/xdebug/xdebug
仍然失败
https://xdebug.org/docs/install
https://xdebug.org/wizard



将php -i 的结果填入对话框
得到下面的提示
https://xdebug.org/wizard
Download xdebug-2.9.6.tgz
仍然报错



pecl install xdebug
Could not download from “https://pecl.php.net/get/xdebug-2.9.6.tgz”, cannot download “pecl/xdebug” (Connection to `ssl://pecl.php.net:443’ failed: )
Error: cannot download “pecl/xdebug”



原因


if PHP_VERSION_ID < 70200


版本判断错了
改成# if PHP_VERSION_ID <= 70200
搜索70200 都改掉临界值,问题解决

7 安装



make install



$make install
Installing shared extensions: /usr/local/lib/php/extensions/debug-non-zts-20160303/



+———————————————————————-+
| |
| INSTALLATION INSTRUCTIONS |
| ========================= |
| |
| See https://xdebug.org/install.php#configure-php for instructions |
| on how to enable Xdebug for PHP. |
| |
| Documentation is available online as well: |
| - A list of all settings: https://xdebug.org/docs-settings.php |
| - A list of all functions: https://xdebug.org/docs-functions.php |
| - Profiling instructions: https://xdebug.org/docs-profiling2.php |
| - Remote debugging: https://xdebug.org/docs-debugger.php |
| |
| |
| NOTE: Please disregard the message |
| You should add “extension=xdebug.so” to php.ini |
| that is emitted by the PECL installer. This does not work for |
| Xdebug. |
| |
+———————————————————————-+



8 配置php.ini



vim /usr/local/php/etc/php.ini



添加
zend_extension=xdebug.so
xdebug.remote_enable = 1
xdebug.remote_connect_back = 1
xdebug.remote_port = 9005
xdebug.max_nesting_level = 512
保存退出
9 重启php-fpm



平滑重启 php-fpm
1) 利用 ps -ef 找到 php master进程
2) 执行命令 kill -USR2 master进程
10 查看模块是否安装



php -m



[Zend Modules]
Xdebug
Zend OPcache



$php -m |grep xdebug
xdebug



说明扩展模块已经按安装成功



phpstorm 配置
https://www.jetbrains.com/help/phpstorm/configuring-local-interpreter.html#switch-between-configured-php-interpreters-on-the-fly



https://www.bbsmax.com/A/QW5YMxve5m/



https://www.jb51.net/article/160077.htm



https://www.cnblogs.com/jingjingdidunhe/p/6261439.html



phpstorm中使用xdebug配置cli模式的调试
在Server服务器上的php.ini里配置xdebug如下:



[xdebug]
zend_extension=/opt/php5/lib/php/extensions/no-debug-non-zts-20090626/xdebug.so



xdebug.remote_enable=1
xdebug.remote_handler=dbgp
xdebug.remote_mode=req
xdebug.remote_host=192.168.2.100
xdebug.remote_port=9000
xdebug.idekey=”PHPSTORM”



remote_host参数的值填写Dev 服务器(开发机器)的IP地址。



remote_port填写9000,只要没有被其它程序占用,就可以了,可以不是9000。



接下来开始设置phpstorm的参数:



快捷键(Ctrl + Alt + S)打开窗口:



打开phpstorm的配置对话框,找到Languages & Frameworks  » PHP »Debug 窗口



这里填写的Debug port为:9000,与php.ini里配置的端口号保持一致!



以上部分与配置web端的debug没有区别,下面即将配置cli路径,见下图,配置php执行路径,先选择php版本,
我安装的是php 5.3版本,所以,版本选择php 5.3.



在弹出的 对话框里 ,继续 点击 + 号键 , 选择”本地机器” 或 “远程机器”



我选择 上面那行”远程机器” , “远程机器”指的是,除本机IP外的,其它机器,可以是虚拟机,我的就是安装的虚拟机上的.



点击”…“按钮后弹出 PHP Interpreter 选择框,从中挑选 PHP.



点击”OK”确



这样,远程php 解释器就配置好了, 接下来,绑定一下本地文件与远程文件的映射关系.



将会弹出如下对话框:



从左边框选择项目在本地的根目录,从右边框选择项目在远程机器上的根目录,这样就映射好了.



点”OK”完成 php Interpreter的配置.



接下来我们去配置debug调试器(Run » Edit Configurations):



点击后弹出窗口如下,我们单击”+”键,并从中选择”PHP Script”:



这样,我们就回到了Debug Configurations对话框,在这里,我们先整个名字,方便记忆.



选择准备debug的php脚本文件:



到这里,就已经配置好了.



我们在php文件里,先打几个断点.



单击 爬虫 按钮,就可以单步调试了:



php cli模式调试工具的配置,就这样完成了



https://www.cnblogs.com/mzhaox/p/11230930.html



https://zhuanlan.zhihu.com/p/93834078
https://xdebug.org/wizard



https://blog.csdn.net/diandian1121/article/details/104674344?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase



我一开始用的是PHPstorm2018.2+PHPstudyV8.1+PHP7.3的的集成环境,全部按照网上的攻略配置完毕,进入调试过程,首先打断点,然后启用爬虫,这个时候可以注意,如果页面启动后发现phpstorm没有进入到断点里面,并且没有任何的报错,那这个多半是配置就出错了,重新回头检查配置再来;
如果启动以后弹出页面,并且phpstorm弹出debug调试框体,那么恭喜你,说明你的配置已经通过了,接下来有可能进入一个巨坑,
这个时候可以看到,进入了断点,也启动了debug调试,激动之余点击如图所示的按钮,结果发现并没有执行下一行,而是出现了如下的情况



那么这个的问题的原因多半是Phpstorm的版本和你所用的PHP版本+debug版本不匹配造成的!!!
这个问题折磨了我一个晚上,我搜了无数的帖子,换了各个版本的PHP+xdebug组合后,还是没解决这个问题,在这个过程中我也搜到过采坑的帖子提示过可能是IDE版本的问题或者PHP+xdebug版本的问题,这个不要太相信xdebug网站给你的建议,但是我当时想装IDE太麻烦,索性就直接换PHP+xdbug的版本,折腾了一晚上还是没搞定,第二天起来抱着死马当活马医的心态,索性装了最新版本的phpstorm2019,继续以前的调试,神奇的一幕发生了
https://blog.csdn.net/diandian1121/article/details/104674344?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase



https://blog.csdn.net/diandian1121/article/details/104674344?utm_medium=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-BlogCommendFromMachineLearnPai2-1.nonecase



https://segmentfault.com/q/1010000017475516



https://www.cnblogs.com/lichihua/p/9656926.html



$ php –version
PHP 7.2.0-dev (cli) (built: May 20 2020 23:46:30) ( NTS DEBUG )
Copyright (c) 1997-2016 The PHP Group
Zend Engine v3.1.0-dev, Copyright (c) 1998-2016 Zend Technologies
with Xdebug v2.9.6, Copyright (c) 2002-2020, by Derick Rethans



vi phpinfo.php
<?php
phpinfo();



php -S 127.0.0.1:8099 phpinfo.php



成功



phpstorm 版本 2008



http://xxlegend.com/2017/05/23/PhpStorm%20Xdebug%E8%BF%9C%E7%A8%8B%E8%B0%83%E8%AF%95%E7%8E%AF%E5%A2%83%E6%90%AD%E5%BB%BA%E5%8E%9F%E7%90%86%E5%88%86%E6%9E%90%E5%8F%8A%E9%97%AE%E9%A2%98%E6%8E%92%E6%9F%A5/



https://blog.csdn.net/note23/article/details/79302641



https://blog.csdn.net/weixin_30814223/article/details/95478296



cli模式下:
需要环境变量
set XDEBUG_CONFIG=remote_enable=1 idekey=PHPSTORM remote_host=127.0.0.1 remote_port=9000 remote_autostart=0



export XDEBUG_CONFIG=”remote_enable=1 idekey=PHPSTORM remote_host=192.168.1.111 remote_port=9000 remote_autostart=1”
export PHP_IDE_CONFIG=”serverName=myserver.loc”



https://www.zhaokeli.com/article/7959.html#mulu4



https://www.jetbrains.com/help/phpstorm/debugging-a-php-cli-script.html



php -dxdebug.remote_enable=1 -dxdebug.remote_mode=req -dxdebug.remote_port=9005 -dxdebug.remote_host=127.0.0.1 -dxdebug.remote_connect_back=0 path/to/script.php



https://www.bbsmax.com/A/QW5YMxve5m/



https://q.cnblogs.com/q/126317/



php -S 127.0.0.1:9089 -t ./



https://www.jetbrains.com/help/phpstorm/browser-debugging-extensions.html



https://www.jetbrains.com/help/phpstorm/2018.1/validate-remote-environment-dialog.html?utm_source=product&utm_medium=link&utm_campaign=PS&utm_content=2018.1



2018版本有个验证对话框
Validate Click this button to have PhpStorm create a validation script, deploy it to the target remote environment, and run it there.



https://q.cnblogs.com/q/126317/



https://blog.csdn.net/u013451157/article/details/80481377



https://xdebug.org/docs/all_settings#remote_mode



https://xdebug.org/docs/dbgp



https://www.jetbrains.com/help/phpstorm/2018.1/validate-remote-environment-dialog.html?utm_source=product&utm_medium=link&utm_campaign=PS&utm_content=2018.1



https://www.jetbrains.com/help/phpstorm/2018.1/validating-the-configuration-of-the-debugging-engine.html?utm_campaign=PS&utm_content=2018.1&utm_medium=link&utm_source=product



https://www.jetbrains.com/help/phpstorm/2018.1/configuring-a-debugging-engine.html?utm_campaign=PS&utm_content=2018.1&utm_medium=link&utm_source=product



https://www.jetbrains.com/help/phpstorm/2018.1/configuring-php-development-environment.html?utm_campaign=PS&utm_content=2018.1&utm_medium=link&utm_source=product



https://www.jetbrains.com/help/phpstorm/2018.1/php-debugging-session.html?utm_campaign=PS&utm_content=2018.1&utm_medium=link&utm_source=product



Category php