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

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

Percebi que há uma falta 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 relata três versões diferentes instaladas no meu laptop:

  5.4.41
  5.5.25
* 5.6.9

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

Como posso informar ao Apache qual versão do PHP uso?

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… Nas minhas informações de PHP ainda tenho: 5.5.24

Responder1

Alguns problemas diferentes aqui estão todos escondidos sob o conceito de confusão de versão do PHP, então tentaremos abordar cada um deles da forma mais clara possível. Primeiro isto:

Percebi que há uma falta 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

PHP CLI não é igual ao módulo PHP Apache.

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

Apenas preste atenção ao resultado de phpinfo()se você estiver preocupado em definir a versão correta do módulo PHP no Apache.

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

Tentei escrever esta linha no meu httpd.conf:

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

Certifique-se de que seu servidor Apache esteja carregando o módulo PHP correto.

Embora o que você fez tecnicamente pareça correto, a única razão pela qual vejo para isso não funcionar é que, de alguma forma, há outra LoadModule php5_modulediretiva nos arquivos de configuração do Apache que está substituindo o valor que você está definindo nessa linha.

Eu recomendaria dar uma olhada no httpd.conf- que presumo estar localizado aqui /etc/apache2/httpd.conf- e ver se talvez haja outro LoadModule php5_moduleque você perdeu ou não percebeu ao editar esse arquivo. Olhando para meu arquivo equivalente no Mac OS X 10.9.5, vejo que a linha está comentada - já que não uso configurações do Mac OS X Apache/PHP - e diz algo assim:

#LoadModule php5_module libexec/apache2/libphp5.so

É claro que no seu caso não seria comentado. Mais detalhes sobre como configurar Apache e PHP para desenvolvimento webpode ser encontrado neste site.

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

Dito isso, não sei o que você está tentando fazer, mas se estiver desenvolvendo web em um sistema Mac OS X, considere seriamente usarMAMPem vez de hackear a pilha principal da web do Mac OS X para fazer as coisas funcionarem.

O benefício do MAMP é que ele é um Mac OS X de nível de produção extremamente equivalente a uma pilha LAMP. E como é voltado para o desenvolvimento web do mundo real, ele tem todos os módulos e configurações configurados exatamente como deveriam ser configurados.

O principal problema do Apache e do PHP no Mac OS X é que o software normalmente está desatualizado, é difícil configurar/ajustar e gerenciar e é difícil depurar quando coisas assim acontecem. E se surgir uma atualização do Mac OS X que acabe com as configurações cuidadosamente configuradas do Apache e do PHP? Você está de volta à estaca zero.

Responder2

Encontrei a solução para o meu problema. Após a edição /etc/apache2/httpd.confeu costumava reiniciar o apache usando:

sudo apachectl restart

Por alguma razão, usar este comando, o Apache não buscaria as atualizações httpd.confe carregaria a configuração antiga.

Usando:

sudo apachectl -k stop
sudo apachectl -k start

Faça uma espécie de reinicialização forçada de todos os serviços e também leia as atualizações no arquivo de configuração e por fim leia o novo caminho para php5_module:

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

Obrigado também@Giacomo1968 pela explicação.

Responder3

Na minha situação (servidor Windows com o compositor instalado), o compositor também tinha caminhos codificados para várias extensões php no php.ini (por exemplo, extensão = C:/php7-3-27/ext/php_gd2.dll). Então eu precisava mudar isso também. Isso ainda não mudou a versão mostrada em phpinfo() chamada de uma página da web do Apache. Acontece que o compositor também adicionou minha pasta de versão antiga do php às variáveis ​​de ambiente PATH, então tive que mudar isso para apontar para minha nova pasta PHP antes de ver a mudança de versão entrar em vigor.

É claro que você precisa garantir que seu httpd.conf esteja atualizado de acordo com as outras respostas neste tópico. Mas se isso não funcionar, verifique qual é o caminho para php.ini listado em phpinfo() e verifique essas ^^ coisas também.

informação relacionada