Executando código PHP local em máquina remota

Artigo que explica como executar um script PHP de uma máquina local em um servidor remoto.

Introdução

No artigo PHP em modo interativo vimos como executar o PHP de forma interativa, ou seja, abrir um "terminal de PHP" e executar comandos sob demanda. Neste artigo, vamos ver como tirar proveito deste recurso de forma que se possa executar um código PHP de sua máquina local em uma máquina remota.

Execução remota

Para executar um comando em uma máquina remota, usando SSH, fazemos o seguinte comando:

$ ssh usuario@servidor-remoto comando

Por exemplo, para obter informações sobre o tempo em que uma máquina Linux está ativa usamos o comando uptime. Então se queremos executar esse comando em um servidor remoto sem precisar acessar a máquina, fazemos como neste exemplo:

$ ssh rubens@192.168.100.123 uptime

Caso você configure uma chave cruzada com o servidor remoto (para não precisar informar sua senha da máquina remota), o comando irá imprimir automaticamente o resultado da execução remota. Para saber como configurar uma chave cruzada, sugiro este artigo Construindo uma relação de confiança SSH entre os servidores.

O exemplo mostrou como executar o comando uptime no servidor 192.168.100.123 com o usuário rubens. Para executarmos um script bash que está na máquina local em um servidor remoto, fazemos desta forma:

$ ssh rubens@192.168.100.123 'bash -s' < meuscript.sh

Ou seja, estamos executando o comando bash remotamente e transferindo o conteúdo do arquivo meuscript.sh para o bash, através da entrada padrão (STDIN), como se estivéssemos entrado no bash remoto e digitado tudo que está no script.

Também poderíamos passar atributos para o script bash, como neste exemplo:

$ ssh rubens@192.168.100.123 'bash -s' < meuscript.sh 'parametro'

Execução remota de script PHP

Agora que já vimos o básico sobre execuções remotas, podemos usar o PHP-CLI de um servidor remoto para executar um script que está em sua máquina local. Para isso, basta fazer como neste exemplo:

$ ssh rubens@192.168.100.123 'php' < meuscript.php

Você também pode colocar o caminho completo até o PHP-CLI no servidor remoto, caso não encontre automaticamente:

$ ssh rubens@192.168.100.123 '/usr/bin/php' < meuscript.php

Para executar um script PHP e passar parâmetros é um pouco diferente. Você precisa colocar dois hífens após o comando PHP e colocar os parâmetros. Note que tudo isso precisa ficar entre aspas:

$ ssh rubens@192.168.100.123 'php -- "parametro1" "parametro2"' < meuscript.php

Observações

Este recurso pode ser muito útil para executar um script PHP em vários servidores sem precisar que o script esteja fisicamente em cada servidor. Pode ser usado em crons para tarefas pontuais.

Embora seja um pouco óbvio, vale salientar que a sua máquina local (onde está o script PHP) não precisa ter o PHP-CLI instalado. Quem precisa ter o PHP-CLI instalado é o servidor remoto.

Uma última observação importante é que o script não pode fazer include/require de outros scripts PHP de sua máquina local. Afinal, ele será executado em uma máquina remota. Então você pode até usar o comando include, mas ele buscará um arquivo da máquina remota.

0 comentários