Como posso chamar Perl de minha página PHP no apache?
Pergunta
meu amigo e eu estamos criando um analisador de log para uma série de jogos. Nós escrevemos o frontend (web) em PHP / MySQL e o analisador em Perl (também usando MySQL, é claro). Agora nós estamos tendo problemas para obter estes dois para se comunicar.
Tudo o que quero para fazer é esta: página de administração de um on-line onde você tem a "análise" botão. Quando você clica neste um script Perl deve começar. Como "exec (" perl /home/www/Init.pm -f games_mp.log ").
Isso é possível? Lembre-se, é suposto ser fácil de configurar.
Já tentamos de tudo, desde sistema / exec para .htaccess, mas nada parece funcionar fora da caixa. Não funciona em todos realmente.
Sugestões?
laka =)
Solução
Lamento dizer que não há nenhuma maneira fácil de configurar isso. Diferentes servidores vêm com diferentes configurações padrão do Apache.
O que você está procurando provavelmente fazer é adicionar a seguinte linha dentro do quer a configuração do servidor, configuração de host virtual, config, ou, se configurada corretamente, .htaccess.
AddHandler cgi-script .cgi .pl .pm
Os usuários também terão de chmod e chown os arquivos de forma adequada.
A coisa é, isso soa como um processo de longa duração. Se for, então isso pode levar muito tempo para executar o navegador irá expirar antes de ser feito. Se for esse o caso, você provavelmente vai querer configurar algum tipo de fila de trabalho e ter um exec script cron baseado fora que cada 5 minutos ou assim.
Outras dicas
Por que não executar o script Perl como se fossem uma página web a partir do jQuery usando mod_perl?
Eu estou disposto a apostar que você está executando em erros Pathing. Tente fornecer o caminho completo para o executável Perl. Por exemplo:
exec("/usr/bin/perl /home/www/Init.pm -f games_mp.log")
Em PHP muitas coisas dependem da configuração. Tente olhar para ele como muitos operadores pode ser desativado.
Verifique que o programa Perl tem direitos corretos. Tente executar você programa Perl de linha de comando.