2012-09-10 18 views
6

Estoy usando el texto sublime 2, y quería usar el plugin sublimelinter. Comprueba el código en segundo plano con php -l. Estoy desarrollando un servidor web que se ejecuta en VirtualBox VM, el servidor web está en la máquina virtual (invitado) y el texto sublime se está ejecutando en el host.¿Alguna forma de ejecutar sublime text linter con php ejecutándose en virtualbox vm?

¿Alguna forma de hacer que esos 2 trabajen juntos? Realmente quería evitar instalar php fuera de la máquina virtual.

Respuesta

6

Tengo algo que funciona bastante bien en mi máquina, pero parece frágil.

La idea

La idea aquí es crear un script de línea de comandos en el host que pasa todos sus parámetros a una llamada PHP en su máquina virtual, a través de un túnel SSH. SublimeLinter puede llamar a este script como lo haría normalmente con el binario de PHP, y desde el punto de vista de Sublime todo "simplemente funcionará" sin tener que instalar PHP en su host.

Estoy usando los hosts de Windows y OS X, así que tengo dos versiones de mi script de túnel. Tenga en cuenta que en Windows necesitará buscar las herramientas de Windows PuTTY SSH, pero para hosts Unix con sabor SSH probablemente ya estará presente.

Para hosts de Windows

  • Descargar las putty herramientas y descomprimirlo en algún lugar útil como C:/Users/Youruser/bin/putty.
  • Crear la secuencia de comandos por lotes a C:/Users/Youruser/bin/php_vm_tunnel.bat con este contenido:

    @echo off 
    C:/Users/Youruser/bin/putty/plink -l youruser -pw yourpassword 192.168.56.101 php %* 
    

NOTA - Asegúrese de sustituir la ruta a plink con la ruta correcta donde descomprimió masilla anteriormente. Además, reemplace los valores del indicador -l y -pw con el nombre de usuario y la contraseña que usa cuando SSH ingresa a su VM. Finalmente, asegúrese de reemplazar la dirección IP en el ejemplo con la dirección IP que usa para SSH en su máquina virtual.

para Unix-ish anfitriones (OS X, Linux, etc.)

  • Cree la escritura del golpe en ~\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 
    

NOTA - estar Asegúrese de reemplazar el indicador -l v aléjese con el nombre de usuario que usa cuando ingresa SSH en su máquina virtual. Además, asegúrese de reemplazar la dirección IP en el ejemplo con la dirección IP que utiliza para SSH en su máquina virtual.

Prueba de la escritura

En este punto usted tiene un script que debe túnel de cualquier cosa que pase a través de la máquina virtual.Así que si en un terminal se va a hacer, decir:

cd wherever_you_put_the_script 
php_vm_tunnel -v 

debería ver la información de la versión de PHP regreso de su máquina virtual.

Sublime Text 2 Configuración

Ahora que ha establecido este túnel, usted puede configurar Sublime Text 2 para hacer uso de ella:

  • Instalar el Package Control Sublime Text 2 plug-in
  • Instalar SublimeLinter el plug-in (que suena como ya era en este punto)
  • Ir a Preferences ->Package Settings ->SublimeLinter ->Settings - User
  • Añadir este el fichero de configuración (de nuevo sustituyendo en la ruta adecuada al guión y tomando nota de las dobles barras de escapar correctamente los caracteres de barra invertida) y guardar:

    { 
        "sublimelinter_executable_map": 
        { 
         "php": "C:\\\Users\\\Youruser\\\bin\\\php_vm_tunnel.bat" 
         "php": "/Users/youruser/bin/php_vm_tunnel" 
        } 
    } 
    

    NOTA - Solo puedes tener una declaración "php". El primero de arriba es la versión de Windows, el segundo es la versión de Unix. Elimina el que no necesitas.

  • reinicio Sublime Text

Si abre la consola de Sublime Text (y todo salió de acuerdo al plan) debería ver algo en el texto de inicio como como:

SublimeLinter: php enabled (using "C:\Users\Youruser\bin\php_vm_tunnel.bat" for executable) 

Y SublimeLinter debería estar borrando correctamente los archivos PHP como si estuviese llamando a un binario PHP nativo.

Buena suerte.

+0

Vale la pena señalar que este truco también podría funcionar para otros complementos, ya que el script de túnel PHP es bastante general. Esta estrategia se romperá, sin embargo, si el complemento intenta escribir un archivo de configuración y luego pasarlo a la llamada PHP como parámetro, porque php no tendrá acceso al sistema de archivos del host para cargar el archivo. –

+0

No puedo probar esto más ya que cambié a Java debido al trabajo, pero parece razonable y completo, así que lo acepto. Gracias. – JSamir

Cuestiones relacionadas