温馨提示×

Ubuntu PHP代码如何调试

小樊
41
2025-10-05 23:55:39
栏目: 编程语言

Ubuntu下PHP代码调试指南(以Xdebug+Visual Studio Code为例)

1. 安装Xdebug扩展

通过Ubuntu包管理器快速安装Xdebug(适配当前PHP版本):

sudo apt-get update
sudo apt-get install php-xdebug

安装完成后,Xdebug会自动集成到PHP环境中,无需手动指定扩展路径(系统会自动识别xdebug.so的位置)。

2. 配置php.ini文件

2.1 找到正确的php.ini文件

PHP的配置文件路径因运行模式(CLI/WEB)而异,通过以下命令快速定位:

php --ini

输出结果会显示Loaded Configuration File(如/etc/php/8.2/apache2/php.ini/etc/php/8.2/cli/php.ini),需分别配置以确保CLI和WEB模式均生效。

2.2 添加Xdebug配置

php.ini文件末尾添加以下配置(关键参数说明见注释):

[Xdebug]
; 启用Xdebug扩展
zend_extension=xdebug.so
; 设置调试模式为"debug"(支持断点、变量查看等功能)
xdebug.mode=debug
; 指定IDE监听的主机地址(本地调试设为127.0.0.1)
xdebug.client_host=127.0.0.1
; 指定IDE监听的端口(默认9003,避免与旧版Xdebug冲突)
xdebug.client_port=9003
; 自动启动调试会话(无需手动触发,访问页面即进入调试)
xdebug.start_with_request=yes
; 可选:设置IDE标识(如PHPStorm用"PHPSTORM",VS Code可自定义)
xdebug.idekey=VSCODE

⚠️ 注意:若使用PHP-FPM,需重启PHP-FPM服务;若使用Apache,需重启Apache服务。

3. 重启Web服务器

配置生效后,需重启对应服务使Xdebug生效:

  • Apache
    sudo systemctl restart apache2
    
  • Nginx+PHP-FPM
    sudo systemctl restart php8.2-fpm  # 替换为你的PHP版本
    sudo systemctl restart nginx
    

4. 配置IDE(以Visual Studio Code为例)

4.1 安装PHP Debug扩展

打开VS Code扩展市场(左侧边栏Extensions图标),搜索PHP Debug(作者:Felix Becker),点击Install安装。

4.2 创建launch.json文件

  1. 点击左侧Run and Debug图标(或按Ctrl+Shift+D);
  2. 点击顶部create a launch.json file,选择PHP
  3. 在生成的launch.json中,替换为以下配置(适配Xdebug的9003端口和项目路径):
{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Listen for Xdebug",
            "type": "php",
            "request": "launch",
            "port": 9003,
            "pathMappings": {
                "/var/www/html": "${workspaceFolder}"  // 将服务器路径映射到本地项目目录
            }
        }
    ]
}

⚠️ 注意:pathMappings需根据实际项目路径调整(如/var/www/html是服务器上的项目目录,${workspaceFolder}是本地的VS Code项目目录)。

5. 开始调试

  1. 设置断点:在VS Code中打开需要调试的PHP文件,在代码行左侧点击(或按F9)设置断点;
  2. 启动调试会话:点击Run and Debug面板的绿色三角形(或按F5),选择Listen for Xdebug
  3. 触发调试:在浏览器中访问PHP页面(如http://localhost/test.php),代码执行到断点时会自动暂停;
  4. 调试操作
    • 查看变量值:悬停鼠标或点击Variables面板;
    • 单步执行:F10(步入)、F11(步出)、Shift+F11(跳出);
    • 继续执行:F5

常见问题排查

  • 断点不生效:检查xdebug.start_with_request=yes是否开启,pathMappings是否正确,以及IDE是否监听了正确端口(9003);
  • 端口冲突:若9003端口被占用,可修改php.ini中的xdebug.client_port(如改为9004),并同步更新IDE配置;
  • Xdebug未加载:运行php -m | grep xdebug,若无输出则说明扩展未加载,需检查php.ini中的zend_extension路径是否正确。

0