Chamar binário java do PHP não é possível

1

Oi, eu gostaria de chamar o java usando a função exec () do PHP, mas ele falha (nenhuma saída, por exemplo, exec('/usr/bin/java -version') .

Estou executando o apache com PHP como Fast-CGI (com fcgid) no debian wheezy.

O binário java está disponível em / usr / bin / java e pode ser chamado a partir da linha de comando, por exemplo, '/ usr / bin / java -version' retorna informações esperadas.

Chamar isso no contexto do usuário do apache / suexec funciona também a partir da linha de comando (sudo-u www-data / usr / bin / java -version).

Mas chamado pelo PHP usig exec() ou verificado com is_executable('/usr/bin/java') não funciona.

O que estou perdendo?

    
por Artur Cichosz 12.09.2016 / 18:31

1 resposta

0

Eu responderei minha própria pergunta aqui. Acontece que existem dois problemas diferentes.

1) Primeiro é trivial, eu esqueci sobre a configuração open_basedir ativa que não inclui o diretório /usr/bin . Mas mesmo assim, depois de incluí-lo, /usr/bin/java stil não era executável de acordo com o PHPs is_executable() . Então eu tive que desativar esse recurso, que não é crítico no meu caso de um servidor DEV local. Talvez alguém tenha uma ideia de como torná-lo executável com open_basedir set.

2) O segundo problema é estranho, mas verdadeiro :-) A chamada "java -version", por alguma razão estranha, não grava em STDOUT mas em STDERR, então PHPs exec() não é capaz de entregar a saída.

    
por 13.09.2016 / 11:00

Tags