如何在PHPStorm Ubuntu快速集成Xdebug调试,大幅提升开发效率?
- 内容介绍
- 文章标签
- 相关推荐
有没有过Debug时盯着日志里一堆乱码变量值发呆的时刻?是不是狠得想把电脑砸了却又无可奈何?别慌!今天咱就来唠唠——如何在Ubu 好家伙... ntu系统上把Xdebug和PhpStorm这对黄金搭档焊死在开发流程里让以后的Debug从“找线索破案”变成“开上帝视角看戏”!
先别急着装 ——先搞清楚你的PHP到底啥版本
害!很多人踩坑都是从“装错 版本”开始的。Ubuntu下PHP版本那叫一个多:php7.4?php8.1?还是刚出的php8.3?版本不对就算装上Xdebug也跟没装一样,是个狼人。。
第一步先查PHP版本:打开终端敲 php -v ——看第一行开头就是版本号啦。比如我这儿显示 PHP 8.2.15 那就好办了。
太暖了。 接着确保基础环境在:Ubuntu默认有apt包管理器嘛,如果没装PHP-cli或者php-fpm先补一下?不过一般装了LAMP/LNMP栈的话应该都有——实在不行 sudo apt update && sudo apt install php-cli 搞定基础包。
然后才是装Xdebug:直接一条命令 sudo apt install php-xdebug ——对!apt会自动匹配你当前PHP版本的Xdebug 包,请叫它“懒人福音”~,我深信...
装完别急着跑!验证一下有没有装上:敲 php -m | grep xdebug 或者 php -v | grep xdebug ——只要输出里有「xdebug」三个大字就成!没出来?那大概率是
目录没加到php.ini里?不过现在apt装的一般都会自动搞定extension_dir路径啦, 可以放心~
重头戏来了——配置Xdebug让它“听IDE指挥”
Xdebug这玩意儿本质就是个“传话筒”:把PHP代码运行时的变量值、调用栈啥的通过网络传给PhpStorm。所以得先教它「往哪传」「怎么传」。
先说说得找到php.ini文件——每个PHP版本都有自己的ini文件嘛!敲 php -i | grep "Loaded Configuration File" ——输出里那串路径就是啦!比如我的是 /etc/php/8.2/cli/php.ini 或者 /etc/php/8.2/fpm/php.ini ——注意哦,如果用Apache就看cli还是fpm?其实改一个就行?不对不对……最好两个都看看?或者直接改 /etc/php//mods-available/xdebug.ini 这个文件——apt新装的Xdebug会自动生成这个配置文件在mods-available目录下!对新手更友好~,太虐了。
打开这个xdebug.ini文件——往里塞这些东西: ini ; Xdebug核心设置 zend_extension=xdebug.so ; 加载 模块 xdebug.mode=debug ; 开启调试模式 x debug.client_host=127.0.0.1 ; IDE所在主机IP——本地开发就填localhost x debug.client_port=9003 ; 和IDE通信的端口——PhpStorm默认就是这个 x debug.start_with_request=yes ; 要不要自动开启调试? 太暖了。 yes就是所有请求都连IDE;no得手动加参数 x debug.idekey=PHPSTORM ; IDE识别码——必须跟PhpStorm里一致
划重点!几个常见踩坑点: - 如果用Docker开发?那client_host千万别填127.0.0.1! 加油! 得填你宿主机的IP地址;还要记得启动容器时映射端口 `-p 9003:90项目经验分享
PhpStorm那边怎么配?别让信号断在半路上
Xdebug那边搞好了还不够——PhpStorm得张开胳膊 “接住” 它发过来的数据呢~
摸个底。 打开PhpStorm→点击右上角「Settings」小齿轮→左边拉菜单找到「Languages & Frameworks」→再点里面的「PHP」→右边选「Debug」选项卡:
先说说看「Debug port」是不是填了 9项目经验分享 ——默认应该就是如果不是改成9项目经验分享;再往下「XDEBUG Session timeout」不用管默认就行;最下面「Force break at first line when no path mapping specified」勾不勾都行……新手先不管这些~
接下来搞Server配置——这个超重要!路径映射错了就算断点打上天也没用! 点左边菜单「Servers」→右上角「+」新加一个Server: - Name:随便起个项目名吧比如“MyBlog”; - Host:你的网站地址——本地开发就填 localhost 或者 127.项目经验分享;如果是远程服务器就填公网IP或域名; - Port:网站用的端口——http就8项目经验分享https就44项目经验分享; - Debugger选「Xebug」; - 最关键是「Path Mappings」!点右边那个小文件夹图标→添加映射关系: → Local path : 你本地项目文件夹路径; 当你.… → Remote path : 服务器上项目路径(比如远程服务器是 /var/www/html/myblog ——如果本地开发就填跟Local path一样的值也行?不不行哦本地开发Remote path得填网站根目录对应的虚拟路径……举个栗子:如果我本地Apache虚拟主机指向 /home/yourname/projects/myblog 那Remote path就填 /home/yourname/projects/myblog ~)
保存完Server设置别急着走!再去「Languages & Frameworks→PHP→CLI Interpreter」确认一下 PHP解释器路径对不对——一般默认会自动识别,如果没识别到点右上角「+」选「System Interpreter」找你装的PHP路径就行~,引起舒适。
终于到实战啦!打个断点感受丝滑时刻
啥都配好了不如直接开整试试爽不爽!
KTV你。 随便打开你本地项目里一个PHP文件——比如index.php——在某一行代码左边空白处点一下鼠标左键💥 ——看见小红点没?那就是断点啦~
接下来启动调试会话两种方式任选:
1. 点击工具栏最左边那个绿色小电话图标📞 ——或者按快捷键 Shift+F9;
2. 在浏览器地址栏输入你的项目网址后面加个参数:? XDEBUG_SESSION_START= PHPSTORM ——比如我本地是 http://localhost/myblog/index.php? XDEBUG_SESSION_START= PHPSTORM ~
刷新浏览器之后……哇塞!PhpStrom瞬间弹出调试面板了你没看错吗变量值清清楚楚列在左边Variables窗口里调用栈在下面Step Over/F Step Into按钮亮得发光 wanna试一下F8步过代码还是F7步入函数随便你心情好~,无语了...
“我的断点怎么不灵啊喂?” ——几个救命避坑指南
别慌! Debug界没有解决不了の问题只有没找到のbug!,与君共勉。
Q1: breakpoint点了没用?
躺赢。 先检查三个地方:① Path Mappings是不是跟屎一样反着? ② Xebug有没有成功加载? ③ PhpStrom有没有开监听?
Q2: Docker容器里の项目调不动?
哈基米! 除了刚才说のclient_host改宿主机IP还要记着启动容器时映射9项目经验分享端口!命令大概长这样:docker run -d - p 8项目经验分享:8项目经验分享 - p 9项目经验分享:9项目经验分享 your_image_name ——不然容器内の网络请求出不去呀!
Q3: SSH远程服务器怎么连?
云服务器防火墙一般不让外部直连9项目经验分享端口咋办?教你一招SSH隧道转发! 在本机终端敲:ssh -R *:9项目经验分享:localhost:9 project experience sharing your_user@remote_server_ip ——这样远程服务器のXebug请求会通过SSH隧道转到你本机の9project experience sharing端口!完美绕过防火墙!,太顶了。
Q4: OPcache搞事情?
有时候开了OPcache缓存会导致Xebug没法正常获取变量值!临时解决办法:找到opcache.ini文件加一行:opcache.ena CPU你。 ble_cli=off或者直接注释掉opcache.enable=1重启PHP服务就行!用完记得改回来哦生产环境开OPcache能快很多呢~
进阶小技巧:让Debug爽到起飞🛫️
以为只会打简单断点就够啦?Too young too simple!
✅ Conditional Breakpoint
右键点击某个红点 breakpoint →选 “Edit Breakpoint…” →在Condition输入框里写条件表达式,比如 $user_id == 行吧... project experience sharing || $is_admin == true.以后程序只会在满足条件时停在这里,循环百万次也不怕浪费时间!
✅ Watch Expressions
调试时想实时看某个变量の计算后来啊?)不用每次都hover在变量上!点击Variables窗口右上角の “+ ” →输入你想监视の表达式,后来啊会实时更新哦~,极度舒适。
✅ Remote Debug多机器协同
要是团队开发有多台电脑怎么办?把每个开发机のx debug.clienthost都改成你们团队LeaderのIDE IP地址,这样所有人のDebug请求都汇总到L 基本上... eader那里统一看!?不对不对……其实反过来才对啦应该把每个被调试机器のclienthost设成IDE所在机器のIP,这样IDE就能收到所有设备发来的数据嘻嘻~
写到这儿突然想到第一次配Xebug那会儿,为了找php.ini文件翻遍整个/etc目录,为了Path Mappings错了得来回改十几次……现在想想真是傻得可爱呢~但谁叫搞定之后.Debug效率直接翻倍快乐翻倍呢?!,请大家务必...
总的来说... 从现在开始把打印日志和猜变量值の功夫省下来去喝杯咖啡吧~毕竟程序员の时间,应该花在写更 cool 的代码上,而不是跟Bug较劲呀~😎
有没有过Debug时盯着日志里一堆乱码变量值发呆的时刻?是不是狠得想把电脑砸了却又无可奈何?别慌!今天咱就来唠唠——如何在Ubu 好家伙... ntu系统上把Xdebug和PhpStorm这对黄金搭档焊死在开发流程里让以后的Debug从“找线索破案”变成“开上帝视角看戏”!
先别急着装 ——先搞清楚你的PHP到底啥版本
害!很多人踩坑都是从“装错 版本”开始的。Ubuntu下PHP版本那叫一个多:php7.4?php8.1?还是刚出的php8.3?版本不对就算装上Xdebug也跟没装一样,是个狼人。。
第一步先查PHP版本:打开终端敲 php -v ——看第一行开头就是版本号啦。比如我这儿显示 PHP 8.2.15 那就好办了。
太暖了。 接着确保基础环境在:Ubuntu默认有apt包管理器嘛,如果没装PHP-cli或者php-fpm先补一下?不过一般装了LAMP/LNMP栈的话应该都有——实在不行 sudo apt update && sudo apt install php-cli 搞定基础包。
然后才是装Xdebug:直接一条命令 sudo apt install php-xdebug ——对!apt会自动匹配你当前PHP版本的Xdebug 包,请叫它“懒人福音”~,我深信...
装完别急着跑!验证一下有没有装上:敲 php -m | grep xdebug 或者 php -v | grep xdebug ——只要输出里有「xdebug」三个大字就成!没出来?那大概率是
目录没加到php.ini里?不过现在apt装的一般都会自动搞定extension_dir路径啦, 可以放心~
重头戏来了——配置Xdebug让它“听IDE指挥”
Xdebug这玩意儿本质就是个“传话筒”:把PHP代码运行时的变量值、调用栈啥的通过网络传给PhpStorm。所以得先教它「往哪传」「怎么传」。
先说说得找到php.ini文件——每个PHP版本都有自己的ini文件嘛!敲 php -i | grep "Loaded Configuration File" ——输出里那串路径就是啦!比如我的是 /etc/php/8.2/cli/php.ini 或者 /etc/php/8.2/fpm/php.ini ——注意哦,如果用Apache就看cli还是fpm?其实改一个就行?不对不对……最好两个都看看?或者直接改 /etc/php//mods-available/xdebug.ini 这个文件——apt新装的Xdebug会自动生成这个配置文件在mods-available目录下!对新手更友好~,太虐了。
打开这个xdebug.ini文件——往里塞这些东西: ini ; Xdebug核心设置 zend_extension=xdebug.so ; 加载 模块 xdebug.mode=debug ; 开启调试模式 x debug.client_host=127.0.0.1 ; IDE所在主机IP——本地开发就填localhost x debug.client_port=9003 ; 和IDE通信的端口——PhpStorm默认就是这个 x debug.start_with_request=yes ; 要不要自动开启调试? 太暖了。 yes就是所有请求都连IDE;no得手动加参数 x debug.idekey=PHPSTORM ; IDE识别码——必须跟PhpStorm里一致
划重点!几个常见踩坑点: - 如果用Docker开发?那client_host千万别填127.0.0.1! 加油! 得填你宿主机的IP地址;还要记得启动容器时映射端口 `-p 9003:90项目经验分享
PhpStorm那边怎么配?别让信号断在半路上
Xdebug那边搞好了还不够——PhpStorm得张开胳膊 “接住” 它发过来的数据呢~
摸个底。 打开PhpStorm→点击右上角「Settings」小齿轮→左边拉菜单找到「Languages & Frameworks」→再点里面的「PHP」→右边选「Debug」选项卡:
先说说看「Debug port」是不是填了 9项目经验分享 ——默认应该就是如果不是改成9项目经验分享;再往下「XDEBUG Session timeout」不用管默认就行;最下面「Force break at first line when no path mapping specified」勾不勾都行……新手先不管这些~
接下来搞Server配置——这个超重要!路径映射错了就算断点打上天也没用! 点左边菜单「Servers」→右上角「+」新加一个Server: - Name:随便起个项目名吧比如“MyBlog”; - Host:你的网站地址——本地开发就填 localhost 或者 127.项目经验分享;如果是远程服务器就填公网IP或域名; - Port:网站用的端口——http就8项目经验分享https就44项目经验分享; - Debugger选「Xebug」; - 最关键是「Path Mappings」!点右边那个小文件夹图标→添加映射关系: → Local path : 你本地项目文件夹路径; 当你.… → Remote path : 服务器上项目路径(比如远程服务器是 /var/www/html/myblog ——如果本地开发就填跟Local path一样的值也行?不不行哦本地开发Remote path得填网站根目录对应的虚拟路径……举个栗子:如果我本地Apache虚拟主机指向 /home/yourname/projects/myblog 那Remote path就填 /home/yourname/projects/myblog ~)
保存完Server设置别急着走!再去「Languages & Frameworks→PHP→CLI Interpreter」确认一下 PHP解释器路径对不对——一般默认会自动识别,如果没识别到点右上角「+」选「System Interpreter」找你装的PHP路径就行~,引起舒适。
终于到实战啦!打个断点感受丝滑时刻
啥都配好了不如直接开整试试爽不爽!
KTV你。 随便打开你本地项目里一个PHP文件——比如index.php——在某一行代码左边空白处点一下鼠标左键💥 ——看见小红点没?那就是断点啦~
接下来启动调试会话两种方式任选:
1. 点击工具栏最左边那个绿色小电话图标📞 ——或者按快捷键 Shift+F9;
2. 在浏览器地址栏输入你的项目网址后面加个参数:? XDEBUG_SESSION_START= PHPSTORM ——比如我本地是 http://localhost/myblog/index.php? XDEBUG_SESSION_START= PHPSTORM ~
刷新浏览器之后……哇塞!PhpStrom瞬间弹出调试面板了你没看错吗变量值清清楚楚列在左边Variables窗口里调用栈在下面Step Over/F Step Into按钮亮得发光 wanna试一下F8步过代码还是F7步入函数随便你心情好~,无语了...
“我的断点怎么不灵啊喂?” ——几个救命避坑指南
别慌! Debug界没有解决不了の问题只有没找到のbug!,与君共勉。
Q1: breakpoint点了没用?
躺赢。 先检查三个地方:① Path Mappings是不是跟屎一样反着? ② Xebug有没有成功加载? ③ PhpStrom有没有开监听?
Q2: Docker容器里の项目调不动?
哈基米! 除了刚才说のclient_host改宿主机IP还要记着启动容器时映射9项目经验分享端口!命令大概长这样:docker run -d - p 8项目经验分享:8项目经验分享 - p 9项目经验分享:9项目经验分享 your_image_name ——不然容器内の网络请求出不去呀!
Q3: SSH远程服务器怎么连?
云服务器防火墙一般不让外部直连9项目经验分享端口咋办?教你一招SSH隧道转发! 在本机终端敲:ssh -R *:9项目经验分享:localhost:9 project experience sharing your_user@remote_server_ip ——这样远程服务器のXebug请求会通过SSH隧道转到你本机の9project experience sharing端口!完美绕过防火墙!,太顶了。
Q4: OPcache搞事情?
有时候开了OPcache缓存会导致Xebug没法正常获取变量值!临时解决办法:找到opcache.ini文件加一行:opcache.ena CPU你。 ble_cli=off或者直接注释掉opcache.enable=1重启PHP服务就行!用完记得改回来哦生产环境开OPcache能快很多呢~
进阶小技巧:让Debug爽到起飞🛫️
以为只会打简单断点就够啦?Too young too simple!
✅ Conditional Breakpoint
右键点击某个红点 breakpoint →选 “Edit Breakpoint…” →在Condition输入框里写条件表达式,比如 $user_id == 行吧... project experience sharing || $is_admin == true.以后程序只会在满足条件时停在这里,循环百万次也不怕浪费时间!
✅ Watch Expressions
调试时想实时看某个变量の计算后来啊?)不用每次都hover在变量上!点击Variables窗口右上角の “+ ” →输入你想监视の表达式,后来啊会实时更新哦~,极度舒适。
✅ Remote Debug多机器协同
要是团队开发有多台电脑怎么办?把每个开发机のx debug.clienthost都改成你们团队LeaderのIDE IP地址,这样所有人のDebug请求都汇总到L 基本上... eader那里统一看!?不对不对……其实反过来才对啦应该把每个被调试机器のclienthost设成IDE所在机器のIP,这样IDE就能收到所有设备发来的数据嘻嘻~
写到这儿突然想到第一次配Xebug那会儿,为了找php.ini文件翻遍整个/etc目录,为了Path Mappings错了得来回改十几次……现在想想真是傻得可爱呢~但谁叫搞定之后.Debug效率直接翻倍快乐翻倍呢?!,请大家务必...
总的来说... 从现在开始把打印日志和猜变量值の功夫省下来去喝杯咖啡吧~毕竟程序员の时间,应该花在写更 cool 的代码上,而不是跟Bug较劲呀~😎

