Não, um arquivo php não pode ser diretamente executável no Windows. Você precisaria de uma solução alternativa como agrupar o comando php filename.php
em um arquivo em lotes.
Estou tentando criar um script que seja executado a partir do servidor da Web que executará um arquivo php via exec()
, mas quero que isso seja feito sem incluir o php
nele. Isso pode ser feito?
Usando o Windows 2008 e o XAMPP
Não, um arquivo php não pode ser diretamente executável no Windows. Você precisaria de uma solução alternativa como agrupar o comando php filename.php
em um arquivo em lotes.
Isso pode ser feito no Windows 7 - não sei se a mesma idéia se aplica ao Windows 2008 - no entanto, os efeitos dessa abordagem podem superar os benefícios.
Essencialmente, tudo que você precisa fazer é tornar php-cli.exe
o programa padrão para abrir arquivos .php.
Eu fiz isso de duas maneiras, não tenho certeza se as duas formas são necessárias.
Em primeiro lugar, faça php-cli.exe (ou php.exe, suponho) o programa padrão para abrir arquivos .php.No Windows, isso equivale a: clique com o botão direito do mouse em um arquivo .php, selecione 'Abrir com ...', procure e selecione o executável php-cli.exe e 'definir como padrão'.
Acredito que, no Windows 2008, essa funcionalidade pode ser acessada por meio do Painel de controle > Programas padrão > Associar um tipo de arquivo ou protocolo a um programa
Uma vez que o executável do php-cli.exe esteja configurado como o aplicativo padrão para arquivos .php, você deve ter alcançado seu objetivo, com alguns efeitos colaterais.
Neste ponto, se você executar scriptname.php no prompt de comando, ele será executado pelo php-cli.exe e a saída mostrada abaixo do prompt - que pode ser o que você deseja; no entanto, se você clicar duas vezes no arquivo, ele também será executado pelo php-cli.exe (em vez do seu editor preferido) - que provavelmente é algo que você não deseja.
No entanto, assoc .php
(pelo menos no meu caso), retornou o tipo de arquivo como correspondente ao editor que utilizo (e verificar esse tipo de arquivo com ftype
deu o caminho para o mesmo editor).
Para corrigir isso, execute algo semelhante ao seguinte (como administrador):
ASSOC .php=PHPScript && FTYPE PHPScript="C:\Program Files (x86)\Xampp\php\php.exe" %1 %*
Depois disso, acessando meu arquivo PHP de teste no navegador, executei o segundo script de teste (sem usar o prefixo php) e exibi o resultado.
Por questões de interesse, meus scripts de teste foram: test2.php (executado no navegador):
<?php
echo exec('test1.php');
?>
test1.php (na mesma pasta):
<?php
echo date('r');
?>
(testado no Windows 7 com o XAMPP 1.7.7 / PHP 5.3.8)