Por que a versão do PHP é diferente em phpinfo () e CLI?

22

Percebi que há um erro de correspondência entre a versão do PHP relatada por phpinfo() e php -v (na CLI).

phpinfo():  5.5.24
php -v: 5.6.9

Estou trabalhando em um Mac OS X 10.10 (Yosemite) e instalei uma biblioteca ( php-version ) para tentar gerenciar as versões do PHP.

Ele me informa três versões diferentes instaladas no meu laptop:

  5.4.41
  5.5.25
* 5.6.9

Eu gostaria de definir a mesma versão do PHP no Apache e CLI.

Como posso dizer ao Apache qual versão do PHP usa?

Eu tentei escrever esta linha no meu httpd.conf :

LoadModule php5_module    /usr/local/opt/php56/libexec/apache2/libphp5.so

Então:

sudo apachectl restart

Mas tudo isso não resolve o problema ... Na minha informação do PHP ainda tenho: 5.5.24

    
por Salvatore Dibenedetto 12.09.2015 / 00:45

2 respostas

12

Algumas questões diferentes aqui, todas escondidas sob o conceito de confusão na versão do PHP, então tentarão abordar cada uma delas com a maior clareza possível. Primeiro isto:

I realized that there is a miss matching between the PHP version reported by phpinfo() and php -v (in the CLI).

phpinfo():  5.5.24
php -v: 5.6.9

O PHP CLI não é o mesmo que o módulo PHP do Apache.

Como explico na resposta a esta outra pergunta aqui , não entre em pânico! Se você está preocupado com qual versão do PHP seu servidor Apache está usando, a saída de phpinfo() é sempre o que você deve prestar atenção. O módulo PHP do Apache e o binário da linha de comando do PHP são duas coisas diferentes que não interferem entre si.

Apenas preste atenção na saída de phpinfo() se você estiver preocupado em configurar a versão correta do módulo PHP no Apache.

Dito isto, você ainda parece ter problemas para obter o módulo PHP correto carregado no Apache:

I tried to write this line in my httpd.conf:

LoadModule php5_module    /usr/local/opt/php56/libexec/apache2/libphp5.so

Verifique se o seu servidor Apache está carregando o módulo PHP correto.

Enquanto o que você parece tecnicamente parece estar correto, a única razão pela qual eu vejo que isso não funciona é de alguma forma, há outra diretiva LoadModule php5_module nos arquivos de configuração do Apache que está substituindo o valor que você está definindo nessa linha. / p>

Eu recomendaria olhar pelo httpd.conf - que eu suponho que está localizado aqui /etc/apache2/httpd.conf - e ver se talvez haja de fato outro LoadModule php5_module que você perdeu ou não notou ao editar esse arquivo. Olhando para o meu arquivo equivalente no Mac OS X 10.9.5, vejo que a linha está comentada, pois não uso configurações do Apache / PHP do Mac OS X e lê algo assim:

#LoadModule php5_module libexec/apache2/libphp5.so

Claro que, no seu caso, seria descomentado. Mais detalhes sobre a configuração do Apache e do PHP para o desenvolvimento da web podem ser encontrados neste site .

Considere seriamente usar o MAMP como uma alternativa às peculiaridades do Mac OS X Apache / PHP.

Agora, tudo isso dito, eu não sei o que você está tentando fazer, mas se você está fazendo o desenvolvimento web em um sistema Mac OS X, você deve considerar seriamente o uso de MAMP ao invés de hackear a pilha principal do Mac OS X para fazer as coisas rodarem.

O benefício do MAMP é um equivalente Mac OS X de nível extremamente produtivo de uma pilha LAMP. E, como ele é voltado para o desenvolvimento da Web no mundo real, ele tem todos os módulos e configs configurados exatamente como se deve configurá-los.

O problema central do Apache e do PHP no Mac OS X é que o software está tipicamente desatualizado, difícil de configurar / ajustar e gerenciar e uma dor de cabeça para depurar quando coisas assim acontecem. E se surgir uma atualização do Mac OS X que elimine as configurações do Apache e do PHP? Você está de volta à estaca zero.

    
por 12.09.2015 / 02:58
3

Eu encontrei a solução para o meu problema. Depois de editar /etc/apache2/httpd.conf usei o apache usando:

sudo apachectl restart

Por alguma razão, usando este comando, o Apache não iria buscar as atualizações no httpd.conf e carregar a configuração antiga.

Usando:

sudo apachectl -k stop
sudo apachectl -k start

Faça um reinício difícil de todos os serviços e também leia as atualizações no arquivo de configuração e finalmente leia o novo caminho para o php5_module :

/usr/local/opt/php56/libexec/apache2/libphp5.so

Obrigado também @JakeGould por sua explicação .

    
por 12.09.2015 / 11:54