小编亲身实操,教你配置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中的常见魔术方法功能作用及用法实例

    PHP中的魔术方法常用于处理类内的特殊情况或事件。在类中,魔术方法的名称以两个下划线开头和结尾,例如__construct(),__destruct()等。下面我们来详细讲解PHP中的常见魔术方法功能作用及用法实例。 __construct()构造函数 该方法在实例化对象时会自动调用,用于初始化类内对象。可以在构造函数中传入参数。示例代码如下: class …

    PHP 2023年5月26日
    00
  • php strlen mb_strlen计算中英文混排字符串长度

    当需要计算字符串的长度时,我们可以使用PHP内置的 strlen() 函数。但是注意,strlen() 函数只能正确计算纯英文字符串的长度,对于中英文混排字符串的计算可能不准确,因为PHP默认的字符编码是ASCII,而中文字符占用的字节数是两个,这就导致使用 strlen() 函数计算中英文混排字符串长度是不正确的。 在这种情况下,我们可以使用 mb_str…

    PHP 2023年5月26日
    00
  • PHP获取文件扩展名的常用方法小结【五种方式】

    PHP获取文件扩展名的常用方法小结 在编写Web开发中,经常会遇到需要获取文件扩展名的需求。因此,本文将介绍PHP中获取文件扩展名的常用方法,主要涵盖以下五种方式: 通过pathinfo函数获取文件扩展名 <?php $filename = ‘example.jpg’; $extension = pathinfo($filename, PATHINFO…

    PHP 2023年5月26日
    00
  • Ubuntu常用命令大全

    下面就为您详细讲解“Ubuntu常用命令大全”的完整攻略: 1. 简介 Ubuntu常用命令是我们平时Linux系统下使用最频繁的一些操作命令,这些命令在开发、维护Linux系统时很有用。掌握这些命令将使您更加熟练地使用Ubuntu系统,并提高您的生产力。 2. 常用命令大全 下面我们列出了常用的Ubuntu命令及其功能的详细介绍: 2.1 基本命令 pwd…

    PHP 2023年5月27日
    00
  • 微信小程序个人怎么注册?微信小程序个人开发者注册教程

    微信小程序个人开发者注册教程 1. 前提条件 在注册微信小程序个人开发者账号之前,需要满足以下前提条件: 手机号码已经实名认证过; 完成实名认证后,还需要申请成为微信公众平台的认证服务号或媒体号才能注册小程序个人开发者账号; 2. 注册流程 2.1 登录微信公众平台 进入微信公众平台官网,输入账号和密码,登录微信公众平台。 2.2 准备认证材料 在开始申请微…

    PHP 2023年5月30日
    00
  • PHP实现导出带样式的Excel

    接下来我会详细讲解“PHP实现导出带样式的Excel”的完整攻略。 一、背景介绍 在实际的开发工作中,我们常常需要使用到Excel表格,然而PHP并没有内置的类或函数可以直接导出带样式的Excel,因此我们需要借助一些第三方工具来实现。 二、选择合适的第三方工具 市场上有很多第三方工具可以帮助我们实现导出Excel的功能,例如PHPExcel、PhpSpre…

    PHP 2023年5月26日
    00
  • 微信小程序学习笔记之本地数据缓存功能详解

    微信小程序学习笔记之本地数据缓存功能详解 什么是本地数据缓存? 在微信小程序中,我们可以通过wx.setStorage()和wx.getStorage()等 API 来实现本地数据缓存功能。本地数据缓存是指将一些小程序需要用到的数据存储在小程序的本地内存中,以便于后续快速读取和使用。本地数据缓存不会被清除,除非用户主动在微信客户端中清除。 如何使用本地数据缓…

    PHP 2023年5月23日
    00
  • 微信小程序 图片等比例缩放(图片自适应屏幕)

    下面是“微信小程序 图片等比例缩放”的完整攻略: 1. 问题背景 在微信小程序开发中,我们经常会使用到图片,但是由于不同设备尺寸的差异,以及不同图片大小的差异,会导致在小程序中显示的图片大小不一致,影响了小程序的美观度和用户体验度。因此,有必要实现图片自适应屏幕,并且保持图片等比例缩放的效果。 2. 解决方案 2.1 使用 rpx 单位 rpx 是小程序的一…

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