%20e%20CLI%3F.png)
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()
ephp -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_module
diretiva 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_module
que 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.conf
eu costumava reiniciar o apache usando:
sudo apachectl restart
Por alguma razão, usar este comando, o Apache não buscaria as atualizações httpd.conf
e 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.