Pergunta

Eu estou trabalhando em um aplicativo que é executado localmente em uma máquina Fedora 10 através do PHP e Apache. Depende de um processo que é executado em segundo plano.

Os superiores hierárquicos quer ser capaz de iniciar / parar / reiniciar o processo, através do browser. Eu estava tentando chegar a este trabalho por ter PHP fazer chamadas para o sistema usando exec () e shell_exec, mas não parece trabalho.

Quando tento iniciar o processo usando "exec ( 'processName')", nada acontece.

Quando tento usar "exec ( 'killall processName')", SELinux começa constantemente aparecendo avisos de que o processo foi permitido (porque eu colocá-lo em modo permissivo), no entanto, não realmente matar o processo! Mas isso parece ir no mesmo depois que a página é totalmente carregado!?!?

Eu sou capaz de chamar outro script de forma semelhante: "exec ( '/ var / www / cgi-bin / ControlProgram INICIAR')". Então, eu não sou realmente certo o que as principais diferenças entre as duas chamadas / comandos.

Eu também colocar a chamada de script no arquivo /etc/rc.local para ter o script executado no início da sessão. No entanto, vou ser capaz de matar este script em PHP desde a sua corrida por ... o sistema?

Eu não sou um guru quando se trata de permissões / SELinux, por isso não poupam sobre os detalhes sórdidos! Agradecemos antecipadamente!

Foi útil?

Solução 2

Eu acredito que eu encontrei o problema. Eu ainda não sei exatamente qual é o problema, mas parece que ele tem algo a ver com permissões de arquivos / diretórios. Quando me mudei para os scripts em meu / var / www / html diretório, os scripts correu. Mudei-los em / var / www / cgi-bin e eles trabalham lá também. Assim, pode ser algo onde apache não pode executar scripts que estão fora do var / diretório / www, ou pelo menos ele não pode fazê-lo diretamente. Obrigado pela sua ajuda embora!

Outras dicas

Se você tem o controle administrativo sobre este sistema você vai querer verificar a configuração do PHP (certifique-se que é o perfil de configuração para o servidor web).

safe_mode vai impedir o PHP de executar qualquer coisa fora de uma pasta específica. Em um ambiente de hospedagem compartilhada, isso geralmente significa que você só pode executar as coisas que são relativas à sua casa pasta / www -. O que parece ser o caso com base em suas notas

Parece que permissões unix velha escola e como apache opera. Eu me lembro (embora tenha sido algum tempo) que o Apache é cuidadoso sobre o que será executado. verifique seus octals.

Para verificar se ele não está SELinux você pode desativá-lo em vez de colocá-lo em permissiva. embora isso irá causar um relabel sistema de arquivos (ou deveria). Nesse ponto os seus atributos estendidos com os contextos SELinux poderia sair de problemas Wack e causa SELinux vez em aplicar novamente.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top