小编亲身实操,教你配置phpstorm与xdebug的调试配置,不成功你骂我

开发php,还是找个专业的Ide较好,vscode毕竟在php上不专业,需要下载各种插件才行,还不支持多线程调试,因此小编下载了phpstorm,打算以后用phpstorm来开发php项目,断点调试代码是必不可少的,还是用xdebug吧,可小编在网上搜索了无数篇文章,照着做了一天,竟然没调试成功。最后功夫不负有心人,终于调试成功,想着成千上万的phper肯定也会遇到此类问题,就索性写一篇博文,教大家彻底解决此问题。

首先说下配置环境,三个情景:分别是:
1. ide(即phpstorm等,也称调试客户端)与web服务端(即php程序)都在同一机器上,此类最好配。此种调试ide与web服务端运行的php代码都在同一位置,即是同一项目,不需要考虑远端连接。

2. ide与web服务端在同一局域网网段上,如本机安装有vmware,php安装在vmware上的虚拟机上,这种也算是在同一局域网网段上。先假设ide在192.168.0.2上,php及apache等在192.168.0.3上,便于以后讲解。此种调试情景中,ide调试的php代码与web服务端运行的php代码不在同一位置,需要进行映射对接,因此稍有麻烦。

3.ide与web服务端不在同一局域网中,其实这种情况最常见,如php代码与php程序均在远端机房内,ide在依靠wifi上网的笔记本中,这种情况配置起来最复杂,需要在远端服务器上下载安装dbgp服务器,经由dbgp桥接才能实现远程调试。但小编感觉没必要这样做,一是直接调试生产端代码不安全,二是有替代方案,可以将生产端代码下载到本机vmware虚拟机上,利用虚拟机模拟实现远端的linux环境。因此本文暂不考虑此种环境。

下面详细讲解下1和2两种情景的配置过程,两种调试虽然一个是本地调试,另一个是远程,但配置情况差不多,因此本文将其放一起讲解,需要时再分别讲解。

一、下载xdebug及配置php.ini

xdebug官网下载地址:https://xdebug.org/download.php,你需要仔细分析和选择要下载的对应版本,否则无法调试。由于非常容易选择错误,建议进入网页 https://xdebug.org/wizard.php,然后将自己phpinfo()输出的信息全复制拷贝到该网页信息框里,让xdebug官方系统为你选择合适的版本。下载好xdebug插件后,安放在某一位置,然后将如下配置添加至php.ini中,注意仔细看下面配置中的注解,都是小编亲手所写,饱含心血和经验。

[Xdebug]
zend_extension=/www/server/php/74/lib/php/extensions/no-debug-non-zts-20190902/xdebug.so//根据自己xdebug所在位置填写
xdebug.collect_params=1
xdebug.collect_return=1
xdebug.auto_trace=On
xdebug.profiler_enable=On
xdebug.mode=debug
xdebug.remote_enable=On//情景1的本地调试可注掉,也可开启
xdebug.client_host=192.168.0.2//ide所在host,此处是按情景2配置,情景1中,ide所在host本地的配成127.0.0.1。别漏掉此项,很多不成功往往是因为此项疏漏
xdebug.remote_host=192.168.0.3//ide或dbgp服务器所在host,此处是按情景2配置。情景1中,可配成127.0.0.1
xdebug.remote_port=9003//注意,用phpInfo()查看下,看是否一致
;xdebug.remote_handler=dbgp//情景3需要,配了dbgp服务器就填,没配就没必要设置
;xdebug.idekey = PHPSTORM//与phpstorm上的DBGP proxy设置中的idekey保持一致,如果客户机与服务器在同一网段上,甚至在同一台机器上,即情景1和2就没必要配置dbgp服务器,如果不在同一网段上,即情景3,就必须配置.

按照以上配置和说明配置好php.ini以后,赶紧重启php服务,千万别忘了此项,小编就是忘记了重启,结果死亡了很多脑细胞,又掉了几根头发。

二、 phpstorm中的配置 

(1)在文件->设置->语言与框架中->PHP 设置你当前的php编译器路径。

小编亲身实操,教你配置phpstorm与xdebug的调试配置,不成功你骂我

 (2)在文件->设置->语言与框架中->PHP->debug PHP->debug 设置端口,端口默认为9000,小编配置的是9003,需要与上面php.ini中的xdebug.remote_port保持一致。

小编亲身实操,教你配置phpstorm与xdebug的调试配置,不成功你骂我

 (3)在上述窗口中点击validate按钮,如下图所示设置并检验是否成功。

小编亲身实操,教你配置phpstorm与xdebug的调试配置,不成功你骂我

 (4)在文件->设置->语言与框架中->PHP->server中,点击+号按钮,添加server,如下图分别是情景1本地服务器和情景2的远程服务器配置说明。 

小编亲身实操,教你配置phpstorm与xdebug的调试配置,不成功你骂我

情景1本地服务器配置示例

 

小编亲身实操,教你配置phpstorm与xdebug的调试配置,不成功你骂我

 情景2远程服务器配置示例 

 

 

(5)打开如下图所示的监听按钮,开始监听访问信号,准备调试

小编亲身实操,教你配置phpstorm与xdebug的调试配置,不成功你骂我

 

 

三、设置断点,打开浏览器开始调试

好了,经过以上配置就基本上配置成功了,剩下的就是用phpstorm打开本地项目,然后打开需要断点调试的代码文件,在左边行号旁双击插入断点,开始调试。开启调试有两种方法,一个是利用phpstorm的内置php执行环境调试,另一个是用浏览器直接访问文件所在网址来调试,小编不推荐第一种,这种不但配置麻烦,而且与实际生产环境脱节,不如直接使用浏览器来调试,如果你要用浏览器调试,建议用chrome类浏览器,并安装上xdebug helpe插件,其实如果不想安装插件,就需要设置cookie了,为本域添加一条“XDEBUG_SESSION=PHPSTORM”,也一样能达到效果,这种方法特别适合用postman之类工具来开启调试,非常方便。如果用xdebug,需要简单设置下,如下图所示:小编亲身实操,教你配置phpstorm与xdebug的调试配置,不成功你骂我

 四、常见错误 

    坑1:注意修改过php.ini后,重启php; 

    坑2:客户机与服务器不在同一网段上,例如家中虽然只有一个路由器,但有两个网段,一个是4G,一个是5G,这就不是同一网段。 

    坑3:网上很多教程的php.ini的配置都少了client_host的配置,结果复制过来后不管用 

五、其它配置建议

    1. 用phpstorm xdebug apache 调试php代码的时候 总是一分钟就超时。这个问题可以修改配置文件解决

  1).php.ini 设置xdebug及max_execution_time等, 增加等待时间

# 超时时间改大一点
xdebug.remote_cookie_expire_time = 3600 max_execution_time=3600 max_input_time=3600 default_socket_timeout = 3600

   2).  在apache配置文件httpd.conf,增加程序执行等待时间

# 超时时间改大一点
Timeout 3600
FcgidIOTimeout 3600
FcgidIdleTimeout 3600
IPCConnectTimeout 3600
IPCCommTimeout 3600

      2.  将simultaneous调大些,避免phpform调试时中途停止。

小编亲身实操,教你配置phpstorm与xdebug的调试配置,不成功你骂我

 

 

  3.  Linux/Mac下 在phpstorm安装目录下的 bin/phpstorm.sh 顶部加一行 ulimit -s 256 可以节省大约600M物理内存(如果在“phpstorm内部”运行php解释器遇到问题,可以尝试 ulimit -s 512,没实测)。建议开8个或更多 php-fpm worker进程,如果有N层curl则至少开N+1个,否则会请求会死锁。

     4.  如果遇到 断点被忽略、不能step-in、无法对变量set-value 等奇怪的问题,可以禁用 eaccelerator 试试。
     5. 遇到页面长时间加载不下来的情况,极可能是因为 你的笔记本禁止了远程连接(360安全卫士==网络防火墙软件都会禁止外来tcp连接),可以从虚拟机检查连接是否畅通:

六、结语

好了,小伙伴们,终于写完了,本篇文章是博主在为网风笔记移动端编写后台api,配置php调试环境时根据亲身经历所写,码文字真不容易,还请读完此篇文章感觉有收获得亲们多多支持本博主下,并给本文推荐下,以让更多朋友受益,也支持下本博。顺便介绍下本人近来开发的一个chrome及edge浏览器插件“网风笔记”,网风笔记可以让你在浏览器上一键以最养眼的方式观看并编辑网页文章,并具有背景涂色、划线、文字编辑、分类保存等等功能。对于喜欢用网页查找文章学习的同学,网风笔记定是你最好的助手。  除了自身的笔记功能外,附带功能也非常丰富强大,一个扩展就让浏览器轻松拥有音视频下载、截图涂鸦、解除网页复制限制、一键提取文章、自由点选段落、快捷打印成A4格式文档、网页笔记编辑整理、定向发布等等功能。这插件简直能让浏览器飞起来,定会让你使用起来爱不释手,欢迎大家免费薅羊毛下载使用,网风官网(netwind.cc)上有安装导引,帮您在edge或chrome上安装。近期本人正在开发配套移动端网风笔记,还请大家多多关注并支持。

七、后记

 本文发出后,收到不少小伙伴的反馈,不少人反映说,网上别的类似配置文章中一般要求配置如下图所示的DBGP代理,你文章中怎么没提及啊?

小编亲身实操,教你配置phpstorm与xdebug的调试配置,不成功你骂我

 

在此,小编作下解释,上面是为本文所提及的情景3的dbgp服务器配套所制,如你远程服务器没安装dbgp服务器,你就没必要填写该项。小编的phpstorm此项什么也没填写,照样运行得很好,如果你要配置dbgp服务器,就按上图所示来填写。

 

原文链接:https://www.cnblogs.com/eminer/p/17247178.html

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:小编亲身实操,教你配置phpstorm与xdebug的调试配置,不成功你骂我 - Python技术站

(0)
上一篇 2023年4月17日
下一篇 2023年4月17日

相关文章

  • PHP AOP教程案例

    下面我将为您详细讲解“PHP AOP教程案例”的完整攻略。 什么是AOP 面向切面编程(Aspect-Oriented Programming, AOP)是一种编程思想,它解决了面向对象编程中的一些横向关注点问题。 AOP 的一个核心功能便是拦截、修改某个对象的某个方法。PHP 的 AOP 有很多库可以使用,这里介绍的是 goaop/aop。 安装 使用 c…

    PHP 2023年5月27日
    00
  • 教你php如何实现验证码

    下面我来详细讲解如何实现验证码的流程和示例。 什么是验证码 验证码(CAPTCHA)是全称为“Completely Automated Public Turing test to tell Computers and Humans Apart”,即全自动区分计算机和人类的图灵测试。简单来说,就是为了解决机器恶意攻击、爆破等问题而设计的,通过在网站上加入验证码…

    PHP 2023年5月27日
    00
  • PHPLog php 程序调试追踪工具

    下面是 PHPLog php 程序调试追踪工具的详细攻略。 1. 简介 PHPLog 是一款基于 PHP 的程序调试和追踪工具,能够记录你的程序运行信息并输出到文件或控制台中,便于开发者调试及定位问题。它支持多种级别的日志,可以通过配置文件进行设置。 2. 安装 你可以通过下面两种方式来安装: 2.1 使用 Composer 安装 在终端中执行以下命令: c…

    PHP 2023年5月23日
    00
  • PHP中将字符串转化为整数(int) intval() printf() 性能测试

    转化字符串为整数的方法 在 PHP 中,将字符串转化为整数有很多方法,其中最常见的是 intval() 函数。 // 使用 intval() 将字符串转化为整数 $str = "1234"; $num = intval($str); echo $num; // 输出 1234 注意,intval() 函数还可以接收一个可选的参数,表示转换…

    PHP 2023年5月26日
    00
  • PHP超全局变量实现原理及代码解析

    PHP超全局变量实现原理及代码解析 1. 什么是超全局变量 PHP中的超全局变量是指可以在程序的任何位置都可以调用的全局变量,且不需要使用global关键字即可在函数内部进行引用。 2. PHP超全局变量的实现原理 PHP实现超全局变量的方法是使用一个名为$GLOBALS的全局数组来存储所有的超全局变量。$GLOBALS数组的每个元素都是一个超全局变量,其下…

    PHP 2023年5月27日
    00
  • PHP函数使用说明(补充)

    PHP函数使用说明(补充) 前言 本文是关于PHP函数的补充说明,旨在帮助PHP初学者更好地掌握和理解PHP函数的使用方法。如果您还不熟悉PHP函数的基本操作,请先阅读 PHP函数使用说明。 函数命名规范 PHP函数的命名规范与变量的命名规范类似,建议使用小驼峰命名法。另外,函数名应尽量简洁明了,易于理解。 定义函数 定义函数的方法与基础版中所述的一致,这里…

    PHP 2023年5月23日
    00
  • PHP zip压缩包操作类完整实例

    PHP zip压缩包操作类完整实例攻略 介绍 zip是一种用于文件归档和压缩的格式。PHP提供了ZipArchive类,可以方便地进行zip压缩和解压操作。本攻略将介绍ZipArchive的基本使用方法,包括创建、添加、解压和删除zip文件等。 安装ZipArchive类库 ZipArchive类库在PHP5.2以上版本中默认包含,无需额外安装。如果您使用的…

    PHP 2023年5月26日
    00
  • 微信小程序商品详情页规格属性选择示例代码

    下面是“微信小程序商品详情页规格属性选择示例代码”的完整攻略: 一、需求描述 商品详情页面中需要实现商品规格属性的选择,包括选择商品颜色、尺码、数量等,类似于淘宝、京东等电商平台的商品详情页,用户可以根据自己的需求选择相应的选项,从而下单购买。 二、实现步骤 页面布局 商品详情页包含商品基本信息、商品图片、商品价格、规格属性选择、商品数量选择、加入购物车、立…

    PHP 2023年5月23日
    00
合作推广
合作推广
分享本页
返回顶部