由于之前做 .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
}
]
}

这里主要添加了 localSourceRootserverSourceRoot 两个配置项:

  1. localSourceRoot 配置的是 laravel 项目程序入口位置,${workspaceRoot} 表示当前工程项目根目录,所以取值 "${workspaceRoot}/public"
  2. 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

如果您有任何建议或疑问请在下面留言交流。

用 Visual Studio Code 调试运行在 homestead 环境中的 laravel 程序的更多相关文章

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

    由于之前做 .net 开发比较熟悉 visualstudio,所以自 visualstudio code 发布后就一直在不同场合使用 vscode ,比如前端.node等等.最近在做 laravel ...

  2. Visual Studio Code 调试 PHP

    Visual Studio Code 调试 PHP 2018/12/4 更新 Nginx + php-cgi.exe 下与 Visual Studio Code 配合调试 必需环境 Visual St ...

  3. Visual Studio Code调试node.js:无法在PATH上找到运行时的node

    首先,环境变量Path中加入nodejs的路径: 验证nodejs是否已经加入环境变量: 接着,重新启动Visual Studio Code, 试一下,是不是好了~   附录:Visual Studi ...

  4. Visual Studio Code调试electron主进程

    Visual Studio Code调试electron主进程 作者: jekkay 分类: electron 发布时间: 2017-06-11 14:56  一·概述 此文原出自[水滴石]: htt ...

  5. Visual Studio Code搭建NodeJs的开发环境

    一.Visual Studio Code搭建NodeJs的开发环境 1.下载安装NodeJs并配置环境变量 可以参考:NodeJs的安装和环境变量配置 2.下载安装 VS Code编辑器 可以参考:V ...

  6. Visual Studio Code (vscode) 配置 C / C++ 环境

    Visual Studio Code (vscode) 配置 C / C++ 环境 昨天突发奇想,想使用vscode配置C++环境,因为不想下载 Dev OR codeblock,然后借助了很多网上教 ...

  7. 用 Visual Studio Code 调试 Node.js

    环境: Visual Studio Code  Node.js 1. 关闭运行中的程序 2.打开入口文件,我这里的入口文件为 app.js 3.点击左侧菜单栏的 debug 按钮 4.点击运行按钮 5 ...

  8. 使用Visual Studio Code调试基于ActionScript的LayaAir HTML5游戏

    使用Visual Studio Code(VS Code)调试的优势 使用VS Code我们可以极大地提高LayaAir Html5游戏项目的调试效率,VS Code的优势有以下几点: 在发生Java ...

  9. visual studio code 调试nodejs 配置简单HTTP服务器

    介绍 Visual Studio Code是一个轻量级的Web集成开发环境on Linux,Mac and Windows,特别是作为前端人员来了, 多了一个可供选择的生产力工具IDE,调试js代码简 ...

随机推荐

  1. mac下安装MySQL【转】

    转:http://www.jb51.net/article/103841.htm 1.官网下载 MySQL v5.7官方正式版下载地址:http://www.jb51.net/softs/451120 ...

  2. 请整体描述Java异常体系

    java把异常当做对象来处理,并定义一个基类Throwable作为所有异常的超类.在java API中已经定义了许多异常的类,这些异常分为两大类,错误Error和异常Exception.其中异常Exc ...

  3. 基于win32的windows画板程序

    功能设计如下: 1.Graphics菜单中可选择图形,支持Rectangle, Circle, Line,选择对应图形,则相应菜单项前面加上选中标志: 2.Options菜单中包含以下选项 a.Col ...

  4. flask-login的使用3

    # coding=utf-8 import flask app = flask.Flask(__name__) app.secret_key = 'super secret string' impor ...

  5. 用Jquery去写树结构

    <!DOCTYPEhtml> <html> <head> <metacharset="utf-8"> <title>Tr ...

  6. CentOS 7 防火墙端口配置

    CentOS 7 防火墙端口配置查看防火墙是否开启systemctl status firewalld 若没有开启则开启systemctl start firewalld 查看所有开启的端口firew ...

  7. drupal7 判断用户是否具有某个权限

    user_access() 具体用法可参考http://www.drupalla.com/node/857

  8. Django随笔

    入门 小Demo设计介绍 本示例完成“图书-英雄”信息的维护,需要存储两种数据:图书.英雄 图书表结构设计: 表名:BookInfo 图书名称:btitle 图书发布时间:bpub_date 英雄表结 ...

  9. 用localStorage来存储数据的一些经验

    localStorage: 是一种你不主动清除它,它会一直将存储数据存储在客户端的存储方式,即使你关闭了客户端(浏览器),属于本地持久层储存 sessionStorage: 用于本地存储一个会话(se ...

  10. OpenGL学习--02--绘制一个红色三角形

    The OpenGL buffer is created, bound, filled and configured with the standard functions (glGenBuffers ...