phpstorm如何去监听本地app实现本地调试

如题所述

  般是通过浏览器访问web项目,脚本的执行不受ide控制,所以一般情况下无法在ide中实现断点,但是有了xdebug,一切变得不一样了。
  当然,我们首先给php安装xdebug扩展,xdebug 有个远程调试的功能,可以指定一个远程ip地址和端口,当我们在浏览器中访问某个脚本的时候,可以通过某种方法告诉xdebug我们需要调试,然后xdebug会将调试信息发送给远程地址,这个远程地址呢,就是我们phpstorm来实现的,它将接收xdebug吐出来的信息,并在ide中反馈给我们,我们就可以实现断点调试了。
  那么,实现这个功能分三步走:
  1.安装&配置xdebug
  安装扩展过程就略了,简单贴一下我的xdebug配置参数,在php.ini中:
  [xdebug]
  zend_extension="/usr/local/Cellar/php54-xdebug/2.2.5/xdebug.so"
  xdebug.remote_enable =1
  xdebug.remote_handler = "dbgp"
  xdebug.remote_host = "localhost"
  xdebug.remote_mode = "req"
  xdebug.remote_port = 9001
  xdebug.idekey="PHPSTORM"
  注意xdebug.remote_host和xdebug.remote_port两个参数,这与phpstorm有关,先留个心。
  之后重启下webserver以使php.ini生效。
  2.phpstorm配置
  在project settings - PHP - Debug中,有一个xdebug的栏,其中有一个debug port,我们设置为9001和上面xdebug.remote_port保持一致,其他不变,保存配置。
  然后点击phpstorm菜单栏run - start listening for php debug connections,这时候php会后台创建一个服务来监听localhost:9001这个地址,对应 xdebug 配置的。
  3.浏览器触发调试
  万事俱备只欠东风,现在打开一个php脚本是不会产生调试信息的,xdebug不会调试所有的请求,必须指定一个标识,xdebug才能识别。
  现在,打开 https//wwwjetbrains.com/phpstorm/marklets/ 这个地址,点击左侧的 generate 按钮,然后页面下方会出现一系列链接,比如 "start debugger" ,查看它的href属性会发现是一个js代码,复制它,然后到你要调试的页面,在f12控制台中执行它,它会在当前域下生成一个cookie,当请求url时,xdebug就能根据这个cookie知道你要debug,随即向localhost:9001吐数据,phpstorm接收到以后再结合自身的断点调试工具...
  但是这样太麻烦,如果你用的是chrome那可以下载一个插件,名字叫 "Xdebug helper" 你可以在插件市场搜索到并安装它,安装好以后在扩展管理中心找到它,并点击 "选项" 链接,进入插件的配置页面,其中IDE Key选择 "phpstorm" ,然后在Domain filter中将你的项目域名添加进去。这样,当你访问你的项目url时,会在地址栏右侧出现一个小虫子,你可以点击小虫子开启debug,很方便吧。
  这样,你在phpstorm中对应url的脚本设置一个断点,然后浏览器中开启debug,刷新页面,phpstorm会自动弹出一个确认框,让你确认是否调试指定的脚本。接着你就可以快乐的使用断点调试功能了。
温馨提示:内容为网友见解,仅供参考
无其他回答
相似回答