• PHP Xdebug


    一、Xdebug安装

    1.获取需要下载的xdebug文件

    xdebug官方向导:https://xdebug.org/wizard

    xdebug历史版本:https://xdebug.org/download/historical

    将phpinfo()函数全部复制到向导中

    <?php
    class index{
        public function indexx(){
            phpinfo();
        }
    }
    $index = new index();
    $index->indexx();

    如果没有相应版本则去下载地址找对应版本.dll文件下载

    下载地址:https://xdebug.org/download

    下载分为TS(线程安全版)及NTS(非线程安全版)

    下载完成后将文件移至对应php版本的ext文件夹中(如: phpphp5.6.9ntsext)

    在对应php.ini文件中添加(有则修改,无则添加)如下配置

    [XDebug]

    zend_extension = "<path to Xdebug extension>"
    ;例如E:SoftwarePhpStudyphpstudy_proExtensionsphpphp7.3.4ntsextphp_xdebug-2.9.2-7.3-vc15-nts-x86_64.dll
    ;尝试联系客户端
    xdebug.remote_enable = true
    ;链接到远程主机的端口号
    xdebug.remote_port = "<the poet for Xdebug to listen to>"
    ;默认为9000端口

    ;运行调试客户端的工具
    xdebug.remote_host = localhost


    ;启用后将忽略remote_host设置,无论谁连接到Web服务器都将获得调试会话,无法用CLI调试
    ;会自动检查$_SERVER['HTTP_X_FORWARDED_FOR']和$_SERVER['REMOTE_ADDR']以获得要使用的IP地址
    ;xdebug.remote_addr_header连接过滤器,仅与xdebug.remote_connect_back配合使用,单独设置无效
    ;xdebug.remote_connect_back = false


    ;设置何时将会话链接至客户端reqjit(随时、仅报错时)
    xdebug.remote_mode = req


    ;使用的环境变量
    XDEBUG_CONFIG ="idekey = session_name"


    ;如果要调试通过Web浏览器启动的脚本,只需将XDEBUG_SESSION_START=session_nameURL作为参数添加 。
    ;除了使用GET参数,您还可以将XDEBUG_SESSION_START设置为POST参数,或者通过名为XDEBUG_SESSION的cookie来设置。
    xdebug.idekey = PHPSTORM

    ;注:在PHP 5.3 及更高版本,需要使用zeng_extension而不是zend_extension_ts,zend_extension_debug或extension

    检测Xdebug安装

    1.执行phpinfo函数,在zend中有如下字样即成功

     2.或在命令行面板输入 php -v

     3.命令行 php -m 也可以

     以上任意一项即成功配置Xdebug到当前php环境

    二、在PhpStorm中配置Xdebug

    在 settingsCtrl+Alt+S)中,选择 Languages & Frameworks -> PHP -> ...

     

    CLI解释器如下:

     

    Name:所选PHP安装的版本。

    PHP executable:与所选PHP安装(Xdebug或Zend Debugger)关联的调试引擎的名称和版本。如果未配置调试器,则PhpStorm显示Debugger: Not installed

    (如果第一步设置无误,则重启服务即可)

    三、定义Xdebug行为

    在PHP -> Debug 中配置Xdebug

    1.Debug port 配置监听端口(默认9000)与第一步中的 xdebug.remote_port 相同

    2.选中“Can accept external connections” ,使PhpStorm通过“ remote_port ”字段中指定的端口接受来自Xdebug引擎的任何传入连接,

    3.选中

    复选框,使调试器在到达并打开未映射到“服务器”页上项目中任何文件的文件时立即停止。调试器在此文件和调试工具窗口的第一行停止。

    变量显示以下错误消息:在服务器上找不到文件的本地副本<path to the file on the server>和链接单击以设置映射。单击链接打开“解决路径映射问题”对话框,并将问题文件映射到其本地副本。

    (清除此复选框后,调试器在到达并打开未映射的文件时不会停止,只会处理该文件,并且不会显示错误消息)

    4.选中

    调试器在到达并打开当前项目外部的文件时立即在第一行停止。

    清除此复选框后,调试器将在当前项目外部打开文件时继续。

    在“ External connections区域中, 指定PhpStorm如何处理从主机以及通过未注册为部署服务器配置的端口接收的连接

    • 通过未注册的服务器配置忽略外部连接:选中此复选框可使PhpStorm忽略从主机接收的连接以及未注册为部署服务器配置的端口的连接。选中此复选框后,PhpStorm不会尝试自动创建部署服务器配置。

    • 在PHP脚本的第一行中断:选中此复选框 使调试器与PhpStorm之间建立连接后立即停止(而不是自动运行直到到达第一个断点)。或者打开运行从主菜单在PHP脚本选项的第一行中断

    • 最高 同时连接:使用此旋转框限制可以同时处理的外部连接的数量。

     

    四、Web服务器调试

    从主菜单中,选择Run->Web Server Debug Validation

     打开的Validate Debugger Configuration on Web Server 中,选择要在其上验证调试器的Web服务器。

    • 选择 Local Web Server or Shared Folder 检查与本地Web服务器关联的调试器。

      • 创建验证脚本的路径:在此字段中,指定将在其中创建验证脚本的服务器文档根目录下的文件夹的绝对路径。对于Inplace类型的Web服务器,该文件夹位于项目根目录下。

        该文件夹必须可通过http访问

      • 验证脚本的URL:在此字段中,输入将在其中创建验证脚本的文件夹的URL地址。如果项目根目录已映射到可通过http访问的文件夹,则可以指定项目根目录或其下的任何其他文件夹。

    • 选择 Remote Web Server 检查与远程服务器关联的调试器。

      • 创建验证脚本的路径:在此字段中,指定将在其中创建验证脚本的服务器文档根目录下的文件夹的绝对路径。该文件夹必须可通过http访问

      • 部署服务器:在此字段中,指定本地服务器或远程服务器类型的服务器访问配置 以访问目标环境。

    单击验证让PhpStorm创建一个验证脚本,将其部署到目标远程环境中并在其中运行。

    打开被报告为已加载并与Xdebug相关联php.ini文件。

     此时

     运行Chorme或任意浏览器开启Debug插件

    在PhpStorm中开启debug监听

    运行网站即可

    配置XDebug打开 php.ini,在末尾增加如下代码:

    [Xdebug]
    zend_extension = d:phpextphp_xdebug-2.3.2-5.4-vc9.dll
    xdebug.remote_enable =1
    xdebug.remote_host = localhost
    xdebug.remote_mode = req
    xdebug.remote_port = 9000

    debug3.0及以上版本

    [Xdebug]
    zend_extension=E:phpphp7.3.4ntsextphp_xdebug-2.9.8-7.3-vc15-x86_64.dll
    xdebug.client_port=9004
    xdebug.client_host=localhost
    xdebug.remote_mode = req
    xdebug.idekey = PHPSTORM
    xdebug.remote_handler=dbgp
    xdebug.mode=debug
    xdebug.start_with_request=yes

    手动开启/关闭debug(添加为浏览器书签即可,可在任意浏览器添加DEBUG_SESSION)

    javascript:(/** @version 0.5.2 */function() {document.cookie='XDEBUG_SESSION='+'PHPSTORM'+';path=/;';})()
    javascript:(/** @version 0.5.2 */function() {document.cookie='XDEBUG_SESSION='+''+';expires=Mon, 05 Jul 2000 00:00:00 GMT;path=/;';})()

    对于端口号被占用的处理

    查看端口占用
    
    netstat -ano
    
    查看指定端口
    
    netstat -aon|findstr "9000"
    
    查看PID对应进程
    
    tasklist|findstr "5876"
    
    结束对应进程
    
    taskkill /f /t /im php.cgi.exe
  • 相关阅读:
    弹出消息对话框ScriptManager
    DataTable 转成字符串数组
    用XmlSerializer进行xml反序列化的时候,程序报错: 不应有 <xml xmlns=''>
    意外的节点类型 Element。只能在简单内容或空内容上调用 ReadElementString 方法
    case when 对某个字段值分类讨论
    sql语句求百分比
    分页Sql语句
    数据库,ADO.NET(ADO),Oledb(Odbc)和编程语言关系框架图
    UIView的alpha、hidden和opaque属性之间的关系和区别
    IOS 入门开发之创建标题栏UINavigationBar的使用
  • 原文地址:https://www.cnblogs.com/xuanjiange/p/11803515.html
Copyright © 2020-2023  润新知