有没有办法运行sublime文本linter与php在virtualbox vm中运行?

JSa*_*mir 6 php virtualbox

我使用的是sublime text 2,我想使用插件sublimelinter.它使用php -l检查后台代码.我正在使用在VirtualBox VM中运行的Web服务器进行开发,Web服务器位于VM(guest虚拟机)中,并且主机上正在运行sublime文本.

有没有办法让这两个人一起工作?我真的想避免在VM外部安装php.

Jon*_*son 6

我的机器上运行得相当好,但看起来很脆弱.

想法

这里的想法是在主机上创建一个命令行脚本,通过SSH隧道将其所有参数传递给VM上的PHP调用.然后SublimeLinter可以调用这个脚本,因为它通常会调用PHP二进制文件,而从Sublime的角度来看,一切都"正常工作"而无需在主机上安装PHP.

我正在使用Windows和OS X主机,所以我有两个版本的隧道脚本.请注意,在Windows上,您需要获取Windows PuTTY SSH工具,但对于Unix风格的主机,SSH可能已经存在.

对于Windows主机

  • 下载putty工具并将它们解压缩到有用的地方C:/Users/Youruser/bin/putty.
  • C:/Users/Youruser/bin/php_vm_tunnel.bat使用此内容创建批处理脚本:

    @echo off
    C:/Users/Youruser/bin/putty/plink -l youruser -pw yourpassword 192.168.56.101 php %*
    
    Run Code Online (Sandbox Code Playgroud)

注意 - 请确保将plink的路径替换为上面解压缩腻子的正确路径.另外,使用SSH连接到VM时使用的用户名和密码替换-l-pw标记值.最后,请确保将示例中的IP地址替换为用于SSH到VM的IP地址.

对于Unix-ish主机(OS X,Linux等)

  • 在.创建bash脚本 ~\bin\php_vm_tunnel

    #!/usr/bin/env bash
    FIXED_ARGS='';
    for (( i = 1; i <= $# ; i++ )); do
        eval ARG=\$$i
        FIXED_ARGS="$FIXED_ARGS $(echo "$ARG" | awk '{gsub(".", "\\&");print}')"
    done
    ssh -l root 192.168.56.101 php $FIXED_ARGS
    
    Run Code Online (Sandbox Code Playgroud)

- 请务必-l使用SSH连接到VM时使用的用户名替换标志值.此外,请确保将示例中的IP地址替换为用于SSH连接到VM的IP地址.

测试脚本

此时,您有一个脚本,它应该将您传递给它的任何内容传送到您的VM.所以,如果你在一个终端,你说:

cd wherever_you_put_the_script 
php_vm_tunnel -v
Run Code Online (Sandbox Code Playgroud)

您应该看到从虚拟机返回的PHP版本信息.

Sublime Text 2配置

现在您已设置此隧道,您可以配置Sublime Text 2以使用它:

  • 安装Package ControlSublime Text 2插件
  • 安装SublimeLinter插件(听起来就像你已经在这一点上)
  • 转到Preferences- > Package Settings- > SublimeLinter- >Settings - User
  • 将其添加到配置文件中(再次在脚本的正确路径中替换并注意双斜杠以正确转义反斜杠字符)并保存:

    {
        "sublimelinter_executable_map":
        {
            "php": "C:\\\Users\\\Youruser\\\bin\\\php_vm_tunnel.bat"
            "php": "/Users/youruser/bin/php_vm_tunnel"
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)

    - 您只能有一个"php"语句.上面的第一个是Windows版本,第二个是Unix版本.删除不需要的那个.

  • 重启Sublime Text

如果您打开Sublime Text控制台(并且一切按计划进行),您应该在启动文本中看到如下内容:

SublimeLinter: php enabled (using "C:\Users\Youruser\bin\php_vm_tunnel.bat" for executable)
Run Code Online (Sandbox Code Playgroud)

并且SublimeLinter应该正确地将PHP文件写入,就像调用本机PHP二进制文件一样.

祝好运.