温馨提示×

Laravel在Ubuntu中如何调试

小樊
43
2025-10-18 17:02:39
栏目: 智能运维

1. 开启Laravel调试模式
在项目根目录的.env文件中,将APP_DEBUG设置为true,以启用详细错误显示(包括堆栈跟踪、请求参数等)。修改后需重启Laravel应用(如使用Sail则运行./vendor/bin/sail restart)。

2. 安装可视化调试工具(可选但推荐)

  • Laravel Debugbar:通过Composer安装,集成到项目中后,会在页面底部显示实时调试信息(如SQL查询、路由、视图渲染时间、内存消耗等)。安装命令:composer require barryvdh/laravel-debugbar --dev
  • Laravel Telescope:提供更全面的请求监控(包括异常、队列、邮件、缓存等),通过composer require laravel/telescope --dev安装,访问/telescope路由查看详情。

3. 配置Xdebug(适用于代码级调试)
Xdebug是PHP扩展,需完成以下步骤:

  • 安装Xdebug:在Ubuntu终端运行sudo apt install php-xdebug(根据PHP版本调整,如php8.2-xdebug)。
  • 修改PHP配置:编辑php.ini(可通过php --ini查找路径),添加/修改以下参数:
    zend_extension=xdebug.so
    xdebug.mode=debug,develop  # 启用调试和开发功能
    xdebug.start_with_request=yes  # 自动启动调试会话
    xdebug.client_host=host.docker.internal  # Ubuntu宿主机地址(Docker环境);若为本地开发,设为127.0.0.1
    xdebug.client_port=9003  # 与IDE监听端口一致(默认9003)
    
  • 重启服务:若使用Docker,运行./vendor/bin/sail down && ./vendor/bin/sail up -d;若为本地环境,重启PHP-FPM(sudo service php8.2-fpm restart)和Web服务器(如Nginx:sudo systemctl restart nginx)。

4. 集成IDE(以VSCode为例)

  • 安装PHP Debug扩展:在VSCode扩展商店搜索“PHP Debug”并安装。
  • 配置launch.json:在项目根目录创建.vscode/launch.json文件,添加以下内容:
    {
      "version": "0.2.0",
      "configurations": [
        {
          "name": "Listen for Xdebug",
          "type": "php",
          "request": "launch",
          "port": 9003,
          "stopOnEntry": false,
          "pathMappings": {
            "/var/www/html": "${workspaceFolder}"  // 映射Docker容器内的项目路径到本地
          }
        }
      ]
    }
    
  • 启动调试:点击VSCode左侧调试栏的绿色播放按钮,选择“Listen for Xdebug”;在代码中设置断点(如控制器方法内),访问应用路由(如http://localhost:8080),VSCode会自动跳转到断点处。

5. 使用交互式调试工具(Tinker)
Laravel Tinker是REPL工具,可用于命令行交互式调试。运行php artisan tinker,输入以下命令:

  • dd($request->all()):查看请求参数(中断执行);
  • DB::table('users')->get():查询数据库并输出结果;
  • Log::info('Debug message'):记录调试日志到storage/logs/laravel.log

6. 检查日志文件
Laravel日志默认存储在storage/logs/laravel.log中,可使用tail -f storage/logs/laravel.log实时查看日志,或通过Log::channel('stack')->error('Error message')手动记录错误信息。

7. 测试驱动调试(长期方案)
为关键逻辑编写单元测试(php artisan make:test UserTest)或功能测试(php artisan make:test LoginTest),通过php artisan test运行测试,自动捕获断言失败和异常,确保代码正确性。

0