PhpStorm配置Xdebug

来源:互联网 发布:百知尚行科技有限公司 编辑:程序博客网 时间:2024/06/01 10:29

PHP 设置调试工具XDebug PHPStorm IDE - derrck - 博客园  http://www.cnblogs.com/derrck/p/5195946.html

Xdebug: Documentation  https://xdebug.org/docs/install  

Xdebug: Documentation  https://xdebug.org/docs/remote

1, 按照官方文档所得, 调试的原理是, 当加载好xdebug工具的php执行php脚本时, php进程就充当client端(注意浏览php网页, 或手动php 1.php执行脚本都会创建php进程), 而ide, vdebug, XDebugClient等就充当server端, php进程和这些"server"端就通过一套协议进行通信调试信息.




xdebug是php拓展, 所有前提得配置好本地php环境

Windows7下的php环境配置教程_php技巧_脚本之家  http://www.jb51.net/article/61507.htm

1, 上文中注意的是, 可能安装好php后, 终端下运行php --ini, 可以查看php.ini配置文件路径, 假如显示没有该文件, 可以去php安装目录下, 按需要把, 把php.ini-development文件重命名为php.ini即可





1, phpstorm使用浏览器调试php


都配置好环境后, 可以开始配置xdebug


先下载PHP扩展Xdebug https://xdebug.org, 可以复制自己的phpinfo粘贴到https://xdebug.org/wizard.php中, 会自动根据本地php版本生成需要下载的版本, php.ini的设置语句. (注意一定要使用跟自己php版本相对应的xdebug拓展才行)


下载好之后放入php目录的ext文件夹中, 然后设置php.ini, 在最后加上

下面是windows环境安装xdebug拓展

zend_extension = C:\path\php\ext\php_xdebug-2.4.0rc4-5.6-vc11-x86_64.dll
xdebug.remote_enable =1
xdebug.remote_handler = dbgp
xdebug.remote_host = localhost  (设置debug时, xdebug拓展(作client端)要连接的远程server端, 这里以本机作为client, server端为例)
xdebug.remote_mode = req
xdebug.remote_port = 9000   (设置debug时, xdebug拓展(作client端)要连接的端口. 注意可能会跟nginx, php-cgi进程端口冲突, 本文下方有冲突的解决方法)
xdebug.idekey=PHPSTORM


linux环境的xdebu拓展安装方法请参照Xdebug: Documentation  https://xdebug.org/docs/install


在电脑属性中添加系统环境变量, linux上可以用export命令

XDEBUG_CONFIG="idekey=phpstorm remote_host=localhost profiler_enable=1"


然后重启apache, 去设置phpstorm, 如下图右方, 配置本地php根路径

 

1. 进入File>Settings>PHP>Servers,这里要填写服务器端的相关信息: 
name: localhost, 
host: localhost, 
port: 80, 
debugger: XDebug

如果是自定域名则host设置自定域名, 如laravel5.io




2. 进入File>Settings>PHP>Debug,找到XDebug选项卡,port填9000 (设置debug时, ide(作server端)要监听的端口. 注意可能会跟nginx, php-cgi进程端口冲突, 本文下方有冲突的解决方法)




3, 进入File>Settings>PHP>Debug>DBGp Proxy 填写: 
IDE key: phpStorm 
host: localhost 
port: 80

设置完毕,点OK退出。

 

下面设置使用浏览器调试php的方法

点菜单栏的Run>Edit Configurations… 在弹出的窗口中添加一个调试配置:

点击左上角加号,选择PHP Web Application



填写完毕后,在代码里设置断点, 再开启电话icno监听, 点小甲壳虫启动调试




再下个浏览器插件, xdebug helper, 下载好之后点选项, IDE选PHPSTORM, 不想让所以网页显示小甲虫, 可以设置domain filter

下载地址:(注意, 本人使用php_xdebug-2.5.0-5.5-vc11-x86_64.dll版本时, 实测哪怕没有该浏览器插件也是可以调试的)

Xdebug helper_Xdebug helper插件_Xdebug helper下载_Xdebug helperchrome_酷容下载 

http://www.mykurong.com/extensions/xdebughelper/#download


基本完事了, 调试就点开电话图标监听, 设置好断点, 点小甲虫开启调试了, 刷新页面可见结果

或者手动在浏览器输入网址, 让执行自定义php脚本, 只要在url后加上参数XDEBUG_SESSION_START=整数 即可, 猜测是用于指示php拓展xdebug工作.

如这个格式的url: http://localhost/data/1.php?XDEBUG_SESSION_START=1




端口冲突解决办法:

注意如果是用浏览器调试, 因为要运行nginx或Apache, 和php-cgi进程, 所有端口上可能与xdebug冲突, 导致报类似下面的错:

windows下nginx根目录logs目录中的error.log日志文件可能有

CreateFile() "D:\Software\nginx-1.11.8/html/index.index" failed (2: The system cannot find the file specified), client: 127.0.0.1, server: localhost, request: "GET /index.index HTTP/1.1", host: "localhost"

或者

cmd下运行php-cgi.exe时报

Cannot bind/listen socket - [2] No such file or directory.
Couldn't create FastCGI listen socket on port 127.0.0.1:9000


这可能是因为默认php-cgi和nginx间就是使用9000端口通信, 所有可能会跟xdebug的端口冲突, 解决办法是:

1, 任务管理器中结束所有nginx和php-cgi进程

2, nginx.conf配置文件改成:

        location ~ \.php$ {
            root           html;

            #监听9001, 非xdebug使用的9000端口即可
            fastcgi_pass   127.0.0.1:9001;    
            fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include        fastcgi_params;
        }

3, cmd下, 运行php-cgi.exe  -b 127.0.0.1:9001 -c "D:\Software\php\php.ini"  让php-cgi进程监听9001端口跟nginx通信

4, 双击运行或cmd下运行nginx.exe

5, 就可以继续使用phpstorm在浏览器调试php代码了

6, 当然也可以设置成xdebug和ide使用其他端口




2, phpstorm不使用浏览器调试php

如果想用phpstome不通过浏览器, 直接调试php脚本, 可以在上述步骤基础上, 继续:










实测, 可以不打开"电话"按钮进行监听也行.