环境:代码开发环境mac ,开发工具phpstorm;
php项目运行环境 ; vmware 虚拟机中 , 操作系统 centos6.7, php 运行环境 LNMP, php 版本 7.3 ;
目标/需求:在开发环境中断点调试 PHP项目代码;最大限度根据真实操作场景来debug 如: 浏览器访问链接 http://laravel55.liang.com/orm1后;可以断点调试程序
应用: 平时项目开发中使用(这种情况较少);分析复杂框架的执行过程,函数调用过程等,方法其一,如分析laravel, 框架;开源项目源码分析;接手他人复杂代码,还未熟悉时等等。总之debug 断点调试时分析代码好的手段之一。
mac 本机IP: 192.168.199.197 ;
虚拟机(work) IP : 192.168.199.129
步骤一: work 中 给php7.3 安装 xdebug 扩展
pecl 安装 xdebug扩展
1032 wget http://pecl.php.net/get/xdebug-2.7.0alpha1.tgz
1043 pecl install xdebug-2.7.0beta1.tgz
注意;2.6.1 stable版本 安装会出错,所以选择beta版本
步骤二:在php.ini 中添加 xdebug 相关配置
[xdebug]
zend_extension=/alidata/server/php7.3/lib/php/extensions/no-debug-non-zts-20180731/xdebug.so
xdebug.remote_enable=1
xdebug.remote_handler=dbgp
xdebug.remote_host=192.168.199.197
xdebug.remote_port=9000
xdebug.idekey=PHPSTROM
配置项含义:remote_enable = 1 标示允许 其他 程序(如phpstorm 浏览器等) 与 php程序联系;
remote_host 一定要写不然 php xdebug 怎么知道谁要和他联系呢,总不能随意来一个都能与 php程序来联系吧这也不安全;
remote_host remote_port; 其实是告诉 php 程序 将来 有个 主机 192.168.199.197 端口是9000 的这个程序(phpstorm )会和你联系的。
remote_host remote_port 一定不能省略!!!
步骤三:phpstorm(它是安装在我的mac真机上) 中配置
php CLI Interpreter 是 不需要配置的!!!;原因是 phpstorm 使用的是 work 中php xdebug; phpstorm 只是告诉 work 中php 我哪些文件什么地方是断点;还有就是 接收 work php 返回来的debug信息(如变量信息,如 响应的浏览器的html 信息 等)
浏览器中不需要安装 xdebug !!!
图一:
debug port 配置:
注意 一定要和 work 中 php.ini 中 xdebug.remote_port 端口号一致 为 9000:
图二:
DBGp Proxy 中 不需要设置!!!因为这可能是其他调试方式中需要配置的,本案例不需要!!!
设置 Servers:
注意 laravel55.liang.com 这个域名 一定要在 mac 真机 /etc/hosts 中加上
注意 Use path mapping 一定 加上,并且mac 真机 和 work 中 php 项目路径一定对应正确!!!
图四:
步骤四:
创建 Run/Debug Configurations
- 选择 Edit Configurations 2. 对话框中左上角 “+ ”号 选择 “PHP Web Page”; 3. 设置 /路由 等
图三:
验证: 经过以上步骤debug 就配置好了 ;在index.php(入口文件中,及controller 中打几个断点);点击 debug 虫子图标;
结果说明:
注注意; 可以看到 途中 PHP_OS 中值为 Linux ;验证了 执行这个PHP代码的其实是 work 中php程序;
图五:
此时浏览器中效果如图:
结果说明:图 右上角 小圈一直转到标示响应还没结束
图六: