使用 visualstudio code 编辑器调试执行在 homestead 环境中的 laravel 程序

由于之前做 .net 开发比较熟悉 visualstudio,所以自 visualstudio code 发布后就一直在不同场合使用 vscode ,比如前端、node等等。最近在做 laravel 项目,需要通过 vscode 来调试 homestead 中的 laravel 代码。做了一些有关 laravel 调试环境安装部署的尝试,本文是一个简要记录。
基本环境
阅读本文之前,你应该安装好了基本的开发环境,比如 visualstudio code、VirtualBox 、vagrant、homestead、laravel 等等。原则上本文只讨论如何通过配置这些应用以实现对 laravel 项目的 debug ,不讨论安装相关软件的细节。
laravel 版本 5.3
homestead 版本 v1.0.1
php 版本 7.1(homestead已集成)
xdebug 版本 2.5(homestead已集成)
vscode 版本 1.9.0
vagrant 版本 1.9.1
VirtualBox 版本 5.1.12
安装和配置 vscode 插件 PHP Debug
通过 marketplace 平台安装插件 phpdebug。 1.9.0 版的 vscode 集成了插件管理功能在左侧的菜单栏,点击扩展按钮 > 输入 PHP Debug > 在搜索结果中找到 PHP debug > 点击安装,安装后重启 vscode 使其生效。
打开调试界面。点击右上角的齿轮按钮配置 launch.json 文件,选择 PHP 选项。此时会生成 launch.json 文件,左侧的 debug 类型默认选中了 listen for xdebug 选项。修改 launch.json 配置如下:
{
"version": "0.2.0",
"configurations": [
{
"name": "Listen for XDebug",
"type": "php",
"request": "launch",
"port": 9000,
"stopOnEntry":false,
"localSourceRoot": "${workspaceRoot}/public",
"serverSourceRoot": "/home/vagrant/Code/Laravel/public",
"log": false
},
{
"name": "Launch currently open script",
"type": "php",
"request": "launch",
"program": "${workspaceRoot}/public/index.php",
"cwd": "${workspaceRoot}/public/",
"port": 9000
}
]
}
这里主要添加了 localSourceRoot 和 serverSourceRoot 两个配置项:
localSourceRoot配置的是 laravel 项目程序入口位置,${workspaceRoot}表示当前工程项目根目录,所以取值"${workspaceRoot}/public";serverSourceRoot配置的是远程服务器端 laravel 站点根目录位置,该目录必须与localSourceRoot位置对应。根据 homestead 环境,这里取值"/home/vagrant/Code/Laravel/public";
启动Homestead
打开命令行终端,依次执行下列命令:
$ vagrant up
$ vagrant ssh
安装 XDebug
注:homestead 已集成了 XDebug,文件位置在 /usr/lib/php//xdebug.so 目录中。如果你不需要更新版本的 Xdebug 功能,可以忽略此步骤。
建议你在 laravel 项目程序入口目录 public 下创建一个临时文件(如 test.php),输入 phpinfo()。把 PHPinfo 的执行结果复制并粘贴到 XDebug installation wizard,程序会根据你的系统环境给出相应的安装向导。
1. 下载 xdebug-2.5.0.tgz
2. 解压文件 tar -xvzf xdebug-2.5.0.tgz
3. 执行 cd xdebug-2.5.0
4. 执行 ./configure
5. 执行 make
6. 执行 cp modules/xdebug.so /usr/lib/php/20160303
配置 XDebug
打开文件 /etc/php/7.1/fpm/php.ini, 添加如下配置:
zend_extension = /usr/lib/php/20160303/xdebug.so
[XDebug]
xdebug.remote_enable = 1
xdebug.remote_autostart = 1
xdebug.remote_host = 192.168.10.1
xdebug.remote_port = 9000
主要有五项配置:
zend_extension 指定要加载的 xdebug 扩展文件;
xdebug.remote_enable 启用远程调试;
xdebug.remote_autostart 默认情况下需要通过指定 HTTP GET/POST 变量来启用远程调试,通过把该选项配置为 1 可以使所有请求自动连接至调试终端而无需指定专属变量信息。详情见: Remote Debugging;
xdebug.remote_host 默认取值 localhost ,由于我们的 homestead 在虚拟机中,并且以 config.vm.network "private_network"形式配置了IP ,所以这里不能配置 localhost。需要手动指定 PC 机 IP 192.168.10.1;
xdebug.remote_port 默认端口号是 9000,这个在前面的 vscode 配置文件 launch.json 中有设置,与其对应即可。
重启web服务Nginx
$ nginx -s reload
启动 xdebug 调试
在 vscode 中进入 debug 界面,点击 开始调试 按钮,PHPdebug 插件将在本机的 9000 端口监听来自 192.168.10.10 的网络请求;
在项目文件 public/index.php 文件中打个断点,然后通过浏览器访问 http://homestead.app ;
一旦 homestead 中有网络请求到 laravel 站点 ,vscode 编辑器即可接收到debug信息并在断点位置暂停下来,同时打印出相关的执行环境上下文信息。
最后
本文地址:http://www.cnblogs.com/kelsen/p/6368550.html
如果您有任何建议或疑问请在下面留言交流。
使用 visualstudio code 编辑器调试执行在 homestead 环境中的 laravel 程序的更多相关文章
- 用 Visual Studio Code 调试运行在 homestead 环境中的 laravel 程序
由于之前做 .net 开发比较熟悉 visualstudio,所以自 visualstudio code 发布后就一直在不同场合使用 vscode ,比如前端.node等等.最近在做 laravel ...
- 简单聊聊VisualStudio的断点调试
这节聊聊如何使用VisualStudio进行断点调试. 在debug过程中,我们有时需要查看程序在运行到某一行代码时,上下文中的变量或者一些其他的数据是什么样的,我们就要设置断点(Breakpoint ...
- 在Mac上使用Visual Studio Code开发/调试.NET Core代码
.Net Core 1.0终于发布了,Core的一大卖点就是跨平台.这个跨平台不只是跨平台运行,而且可以跨平台开发.今天抽空研究了下在Mac下如何使用VS Code来开发.NET Core程序,并且调 ...
- Mac上使用Visual Studio Code开发/调试.NET Core代码
Mac上使用Visual Studio Code开发/调试.NET Core代码 .Net Core 1.0终于发布了,Core的一大卖点就是跨平台.这个跨平台不只是跨平台运行,而且可以跨平台开发.今 ...
- visual studio code 编辑器的配置及快捷键等, vscode, csc
visual studio code (vsc) 对开发node.js,javascript,python,html,golang等比较友好,同时支持git浏览及分屏对比,运行速度快,所以是值得一用的 ...
- 使用VS Code开发调试.NET Core 多项目
使用Visual Studio Code(VS Code)开发调试.NET Core和ASP.NET Core 多项目multiple project. 之前讲解过如果使用Visual Studio ...
- 【菜鸟玩Linux开发】在Linux中使用VS Code编译调试C++项目
最近项目需求,需要在Linux下开发C++相关项目,经过一番摸索,简单总结了一下如何通过VS Code进行编译调试的一些注意事项. 关于VS Code在Linux下的安装这里就不提了,不管是CentO ...
- 【转载】在Linux中使用VS Code编译调试C++项目
原文:在Linux中使用VS Code编译调试C++项目 最近项目需求,需要在Linux下开发C++相关项目,经过一番摸索,简单总结了一下如何通过VS Code进行编译调试的一些注意事项. 关于VS ...
- 在Linux中使用VS Code编译调试C++项目
最近项目需求,需要在Linux下开发C++相关项目,经过一番摸索,简单总结了一下如何通过VS Code进行编译调试的一些注意事项. 关于VS Code在Linux下的安装这里就不提了,不管是CentO ...
随机推荐
- hbuilder 手机app开发系列(一)
最佳答案好水啊,实在看不过眼,首先apicloud是一个框架,hbuidler是ide工具,两者没什么可比性.我来推荐一个国外免费开源的项目吧,Ionic framework,我之所以推荐它是因为它支 ...
- Unity3d 开发之 ulua 坑的总结
相同的 lua 代码在安卓上能正常运行,但在 IOS 上可能不会正常运行而导致报红,崩溃等,我在使用 lua 编程时遇到的一些坑总结如下: 1. File.ReadAllText, 诸如以下代码在 i ...
- 6种炫酷的CSS3按钮边框动画特效
6种炫酷的CSS3按钮边框动画特效Button border animate 用鼠标滑过下面的按钮看看效果! Draw Draw Meet Center Spin Spin Circle Spin T ...
- Apache2 MPM 模式了解
一.MPM MPM(Multi-Processing Module (MPM) implements a hybrid multi-process multi-threaded server)是Apa ...
- HTML--绝对路径, 表格,表单, 框架
URL, URI, URN URL: 统一资源定位符: Uniform Resource Locator URN: 持久可用的资源标准名称 Uniform Resource Name , 比如邮箱 U ...
- iOS推送跳转AppDelegate跳转VC
在开发项目中,会有这样变态的需求: 推送:根据服务端推送过来的数据规则,跳转到对应的控制器 feeds列表:不同类似的cell,可能跳转不同的控制器(嘘!产品经理是这样要求:我也不确定会跳转哪个界面哦 ...
- 关于JAVA中hashCode
hash code 即散列码根据对象计算出的一个整型值,散列码是没有规律的. 如果两个对象相等(equal() 返回true),则hashCode一定相等,如果两个对象hashCode相等,则对象不一 ...
- Android源码编译jar包BUILD_JAVA_LIBRARY 与BUILD_STATIC_JAVA_LIBRARY的区别(二)
上文简单介绍了BUILD_JAVA_LIBRARY 与BUILD_STATIC_JAVA_LIBRARY编译出来jar包的区别, 那么你如果拿到了一个内容是dex格式的jar包,而你又偏偏需要这个ja ...
- CLR VIA C#: 基元类型、 引用类型 和 值类型
一.基元类型 . 引用类型 和 值类型的区别: 1.基元类型(primitive type):编译器直接支持的数据类型: 基元类型 直接映射到 FCL 中存在的类型. C# 小写是基元类型,例如:st ...
- 前段验证框架 formValidator
http://blog.csdn.net/lorinzhang/article/details/7283557