chamada de programa externo PHP

1

Minha configuração é a seguinte: Windows 7, XAMPP com Apache e PHP habilitado Eu tenho um script PHP no qual eu chamo um programa externo para executar uma conversão. Este programa externo é um arquivo EXE, que requer 3 atributos:

  • O arquivo de origem
  • O arquivo de destino
  • Sinalizadores adicionais (tipo de conversão, etc.)

Quando eu uso a ferramenta de linha de comando embutida no XAMPP para executar meu script, tudo funciona bem. Mas quando eu uso a função exec () no meu script PHP, nenhum arquivo de saída é criado. Tenho certeza que a conversão está realmente acontecendo (leva cerca de 5 segundos, aproximadamente o mesmo tempo que leva para executar o script PHP).

Eu acho que é uma coisa de permissões, então eu já mudei o arquivo EXE para a mesma pasta que o meu arquivo PHP e ajustei as permissões da pasta inteira (eu concedi todas as permissões para todos os usuários). Eu também desativei o Windows UAC e tentei colocar o comando em um arquivo BAT. O arquivo simplesmente não é criado.

Qualquer ajuda ou dicas serão muito apreciadas!

EDIT: Meu código PHP é o seguinte:

exec('c:\converter.exe c:\src.txt c:\dst.txt -f', $output);
print_r($output);

Quando imprimo $ output, a matriz fica vazia. Quando eu coloco exatamente o mesmo comando no prompt de comando, o código funciona como um encanto (sem erros de sintaxe). Eu também uso caminhos absolutos.

    
por Flock Dawson 12.07.2013 / 15:39

1 resposta

1

Muito obrigado pela sua contribuição! Como se viu, foi o problema do Windows causado pelo recurso 'Interactive Services Detection'. O Apache estava sendo executado como um serviço do sistema, o que impedia chamadas para programas externos (com uma GUI). Desativei o recurso de execução como serviço no XAMPP, que resolveu o problema. Uma explicação mais detalhada pode ser encontrada aqui: link

    
por 12.07.2013 / 17:50