我使用的是sublime text 2,我想使用插件sublimelinter.它使用php -l检查后台代码.我正在使用在VirtualBox VM中运行的Web服务器进行开发,Web服务器位于VM(guest虚拟机)中,并且主机上正在运行sublime文本.
有没有办法让这两个人一起工作?我真的想避免在VM外部安装php.
我的机器上运行得相当好,但看起来很脆弱.
这里的想法是在主机上创建一个命令行脚本,通过SSH隧道将其所有参数传递给VM上的PHP调用.然后SublimeLinter可以调用这个脚本,因为它通常会调用PHP二进制文件,而从Sublime的角度来看,一切都"正常工作"而无需在主机上安装PHP.
我正在使用Windows和OS X主机,所以我有两个版本的隧道脚本.请注意,在Windows上,您需要获取Windows PuTTY SSH工具,但对于Unix风格的主机,SSH可能已经存在.
C:/Users/Youruser/bin/putty.C:/Users/Youruser/bin/php_vm_tunnel.bat使用此内容创建批处理脚本:
Run Code Online (Sandbox Code Playgroud)@echo off C:/Users/Youruser/bin/putty/plink -l youruser -pw yourpassword 192.168.56.101 php %*
-l和-pw标记值.最后,请确保将示例中的IP地址替换为用于SSH到VM的IP地址.
~\bin\php_vm_tunnel
Run Code Online (Sandbox Code Playgroud)#!/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
-l使用SSH连接到VM时使用的用户名替换标志值.此外,请确保将示例中的IP地址替换为用于SSH连接到VM的IP地址.
此时,您有一个脚本,它应该将您传递给它的任何内容传送到您的VM.所以,如果你在一个终端,你说:
Run Code Online (Sandbox Code Playgroud)cd wherever_you_put_the_script php_vm_tunnel -v
您应该看到从虚拟机返回的PHP版本信息.
现在您已设置此隧道,您可以配置Sublime Text 2以使用它:
Package ControlSublime Text 2插件SublimeLinter插件(听起来就像你已经在这一点上)Preferences- > Package Settings- > SublimeLinter- >Settings - User将其添加到配置文件中(再次在脚本的正确路径中替换并注意双斜杠以正确转义反斜杠字符)并保存:
Run Code Online (Sandbox Code Playgroud){ "sublimelinter_executable_map": { "php": "C:\\\Users\\\Youruser\\\bin\\\php_vm_tunnel.bat" "php": "/Users/youruser/bin/php_vm_tunnel" } }
注 - 您只能有一个"php"语句.上面的第一个是Windows版本,第二个是Unix版本.删除不需要的那个.
如果您打开Sublime Text控制台(并且一切按计划进行),您应该在启动文本中看到如下内容:
Run Code Online (Sandbox Code Playgroud)SublimeLinter: php enabled (using "C:\Users\Youruser\bin\php_vm_tunnel.bat" for executable)
并且SublimeLinter应该正确地将PHP文件写入,就像调用本机PHP二进制文件一样.
祝好运.