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

yizhihongxing

开发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日

相关文章

  • Windows下配置Nginx+PHP基本操作(启动、重启和退出)

    下面是在Windows系统下配置Nginx和PHP的完整攻略,包括启动、重启和退出操作: 1. 安装Nginx和PHP 首先需要安装Nginx和PHP,可以从官网下载对应的安装包进行安装。具体安装过程不再赘述。 2. 配置Nginx 接下来需要进行Nginx的配置,首先需要打开Nginx的配置文件nginx.conf。在Windows系统下,配置文件默认位于…

    PHP 2023年5月24日
    00
  • php 中的closure用法详解

    PHP 中的 Closure 用法详解 什么是闭包(Closure)? 闭包是一种能够存储变量状态的匿名函数,可以在定义它的所在函数已经退出后执行,保留着所在函数的变量值,因此也称为 匿名函数的 引用封装那些变量。 闭包的基本语法 $func = function(parameters) use ($variable) { // function body …

    PHP 2023年5月26日
    00
  • PHP的引用详解

    对于“PHP的引用详解”,我将分成以下几点来详细讲解: 标题 首先,我们来讲一下标题的使用。可以使用井号(#)来表示标题。一个井号表示一级标题,两个井号表示二级标题,以此类推,直到六级标题。如下所示: # 一级标题 ## 二级标题 ### 三级标题 #### 四级标题 ##### 五级标题 ###### 六级标题 什么是引用? 在PHP中,引用是指将变量作为…

    PHP 2023年5月23日
    00
  • PHP浮点数精度问题汇总

    PHP浮点数精度问题 在 PHP 中,使用浮点数可能会遇到一些精度问题,比如出现了“0.1+0.7=0.79999999”的情况。以下是 PHP 浮点数精度问题的一些情况和解决方案。 浮点数存储 我们习惯于使用十进制浮点数表示实数,其实计算机内部使用的是二进制浮点数来存储浮点数。二进制浮点数由符号位、指数位和尾数表示。 对于32位的浮点数,由1位符号位、8位…

    PHP 2023年5月26日
    00
  • 微信小程序开发技巧汇总

    微信小程序开发技巧汇总 微信小程序是一种新型的移动应用程序,具有很多独特的开发技巧。本文将汇总一些微信小程序开发技巧,帮助开发者更轻松地实现各种功能。 提高小程序性能的技巧 1. 使用TabBar实现页面缓存 微信小程序默认不会缓存隐藏的页面,使用 TabBar 可以让小程序始终保持页面载入状态,从而提高小程序的性能。 <tabbar> <…

    PHP 2023年5月23日
    00
  • PHP入门教程之上传文件实例详解

    对于“PHP入门教程之上传文件实例详解”,本篇攻略将分为以下几个部分进行讲解: 上传文件的基本原理 如何编写PHP文件上传功能 如何处理上传的文件 一个完整的示例 示例解析 1. 上传文件的基本原理 在HTTP协议中,要上传文件,我们需要使用HTTP POST请求,并且使用“multipart/form-data”格式发送请求。具体来说,我们需要在请求头中设…

    PHP 2023年5月26日
    00
  • 微信JSSDK分享功能图文实例详解

    微信JSSDK分享功能图文实例详解 微信JSSDK是一个开发工具包,旨在通过注入一些JS代码,为微信公众号提供一些增强的功能。其中,微信JSSDK分享功能是其中较为重要的一部分,因为它提供了一种方便的方式,使网站或应用程序能够与微信的社交媒体进行交互,并将内容分享到朋友圈或会话中。 步骤一:前期准备 在使用微信JSSDK分享功能之前,你需要先完成以下准备工作…

    PHP 2023年5月23日
    00
  • php中in_array函数用法分析

    PHP中in_array函数用法分析 什么是in_array函数? in_array()函数是PHP内置函数之一,用来检查一个值是否存在于数组中。它可以帮助我们快速地判断一个元素是否在一个数组中存在,返回值为布尔类型。通俗地说,in_array()函数就是用来判断一个值是否在数组中存在的。 下面我们来看一下in_array()函数的具体语法: in_arra…

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