Páginas

30 de abr de 2014

Como diferenciar chamadas via Servidor Web ou Linha de Comando no PHP

Algumas vezes, aplicações necessitam de código PHP sendo executado diretamente de seu cliente de linha de comando (CLI). Exemplo corriqueiro acontece quando vamos configurar o cron para executar certos scripts em nosso servidor de forma agendada.
Normalmente, quanto criamos esse tipo de script, sua função está fechada a somente ser executado pelo cron. Não é interessante que o servidor web permita execução desse script através da internet ou localmente.
Existem várias formas para alcançar esse objetivo, bloquear especificamente esses scripts no seu apache ou nginx, armazenar fisicamente os scripts em diretórios fora do alcance web ou (mais simples) não permitir que seu script seja invocado por qualquer outro método, senão o CLI. Isso pode ser feito de maneira simples utilizando a função php_sapi_name()

function isCli(){
    return (php_sapi_name() == 'cli');
}

if(isCli())
    print 'Rodando na Linha de Comando';
else
    print 'Rodando em algum outro lugar';

O PHP sempre irá responder “cli” para a interface de linha de comando. A resposta de retorno quando for Servidor web, vai depender do ambiente configurado. Em Ubuntu, Debian e derivados, a resposta será algo como, “apache2handler”.

Leia no Google Drive!

Nenhum comentário:

Postar um comentário