Ubuntu 10.04, MySQL 5.1, Apache 2.2 e PHP 5.2/5.3:
Acabei de descobrir que estou usando a versão errada do PHP para um aplicativo CRM. Depois que descobri como fazer um phpinfo()
script simples para me dizer o que o Apache2 está usando, tentei mudar o php.ini
modo para que meu servidor web usasse o PHP que eu queria. Bem, este é o meu problema. Não tenho certeza de como fazer isso.
Compilei a versão do PHP que desejo /etc
aqui:
/etc/php-5.2.8/
Dentro dele, havia um php.ini-recommended
arquivo no qual fiz algumas alterações e renomeei para php.ini
que o PHP pudesse usá-lo. Mas quando abri meu navegador e limpei meu histórico e fui até o http://localhost<CRM dir>/install.php
endereço, o assistente ainda diz que não estou usando a versão correta do PHP.
Baseado em esta postagemo que devo fazer para alterar a versão do PHP que aparece depois de executar meu test.php
script? Em outras palavras, phpinfo()
diz que estou executando o PHP 5.3.2, mas quero alterá-lo para minha versão compilada 5.2.8 localizada em /etc
.
Responder1
Dependendo do seu servidor, você deve olhar para o Apache, não para o PHP.
(Para RHEL/CentOS) veja/etc/httpd/conf.d/php.ini
#
# PHP is an HTML-embedded scripting language which attempts to make it
# easy for developers to write dynamically generated web pages.
#
LoadModule php5_module modules/libphp5.so
#
# Causes the PHP interpreter to handle files with a .php extension.
#
AddHandler php5-script .php
AddType text/html .php
Você verá que seu módulo PHP é modules/libphp5.so
.
AddHandler php5-script .php
diz ao Apache para executar o PHP em qualquer arquivo com extensão .php
.
Se você estiver usando um sistema operacional baseado em RPM, provavelmente será mais fácil desinstalar (supondo que você possa fazer isso) a versão atual do PHP e reinstalar a versão que você está procurando.
rpm -qa | grep php
irá mostrar qual versão do PHP está instalada atualmente.
Responder2
Se você já instalou outra versão do php, você só precisa alterar o módulo php* usado pelo apache.
por exemplo, tenho php5 e php7.0. quando quero que o apache use o php7.0, só preciso habilitar o módulo dele e desabilitar o módulo php5.
sudo a2dismod php5
sudo a2enmod php7.0
Responder3
Existem dois métodos principais para instalar uma nova versão do PHP e informar ao Apache para usá-la: mod_php
e php-fpm
.
Observação:O método preferido é o php-fpm
, e muitas distribuições novas (incluindo o Fedora) o utilizam por padrão.
Instale o PHP como módulo Apache SAPI
Aquié o guia sobre isso para sistemas Unix, da documentação oficial. Faltam alguns pontos (pelo menos para minha configuração), então sigo as etapas:
Construa PHP a partir do código-fonte. Na
./configure
etapa, use--with-apxs2
. Isso criará um módulo manipulador Apache 2 compartilhado para você.Certifique-se de ter
apxs
o comando definido em seu caminho ou especifique seu caminho como o valor da opção (ou seja,--with-apxs2=/path/to/apxs
).Por exemplo, se você instalou o Apache em todo o sistema e deseja instalar este comando também (por exemplo, em um ambiente local), no Fedora e seus derivados, você pode instalá-lo:
sudo dnf install httpd-devel
Depois que a construção estiver concluída (ou seja, depois de
make
oumake test
), executemake install
(como root, talvez). Obviamente, isso instalará o PHP no caminho que você especificou (ou seja, com--prefix
).O que é feito antes da instalação do PHP é, por causa da
--with-apxs2
opção, instalar o módulo PHP apache2handler SAPI. Ele prepara o objeto compartilhado (por exemplo, em/usr/lib64/httpd/modules/libphp.so
), e ativa o módulo (por exemplo, em/etc/httpd/conf/httpd.conf
), adicionando uma das seguintes linhas ao arquivo de configuração do Apache, dependendo da versão do PHP que você instalou (a linha é inserida abaixo da seção "Dynamic Shared Suporte a Objeto (DSO)"):# In the case of PHP8 LoadModule php_module /usr/lib64/httpd/modules/libphp.so # In the case of PHP7 LoadModule php7_module /usr/lib64/httpd/modules/libphp.so
Observação:Ao ativar as versões do PHP, especialmente as principais, lembre-se de verificar se há apenas um desses
LoadModule
programas para PHP disponível, caso contrário o servidor Apache se recusará a iniciar.
Instale o PHP como PHP-FPM (FastCGI Process Manager)
A definir. :)
Etapas finais
Etapa extra do PHP 8.0 e superior
Caso sua distribuição ainda não suporte PHP8 (por exemplo, Fedora 34) e você instalou o Apache2 a partir do gerenciador de pacotes, você deve dar mais um passo.
O problema é que, a partir do PHP 8.0, o Apache2 usa identificadores diferentes para módulos SAPI do que antes. Esses identificadores são usados para detectar se você está usando mod_php
ou php-fpm
, nos arquivos de configuração. Para PHP5, foi php5_module
e mod_php5
; para PHP7, é php7_module
e mod_php7
, e para PHP8, é php_module
e mod_php
.
Neste caso, navegue até o diretório de configurações do Apache2 (por exemplo /etc/httpd
) e comece a editar o arquivo conf.d/php.conf
. Existem duas IfModule
seções: uma para ativar php-fpm
se você não usar mod_php
e outra para ativar mod_php
se você estiver usando (ou seja, usando LoadModule
em algum lugar nas configurações). Você deve atualizar essas condições para cobrir o PHP8 também.
Por exemplo, considere o seguinte:
<IfModule !mod_php5.c>
<IfModule !mod_php7.c>
# Enable PHP-FPM configuration
</IfModule>
</IfModule>
Você deve cercar a configuração principal com mais uma IfModule
seção como esta:
<IfModule !mod_php.c>
# Enable PHP-FPM configuration
</IfModule>
E faça o mesmo para a mod_php
seção de configuração do ativador.
Último passo
Reinicie o serviço Apache:
service httpd restart
Agora, phpinfo()
deverá mostrar a nova versão do PHP que você acabou de instalar. Você deveria estar feliz agora. :)
Responder4
Eu tive o mesmo problema onde phpinfo() mostrava a versão 7.0 mesmo tendo atualizado para a versão 7.3. E acontece que eu simplesmente tive quereinicie o apache.
Eu usei sudo systemctl restart httpd
no centos7