Como alterar qual versão do PHP Apache2 usa?

Como alterar qual versão do PHP Apache2 usa?

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.inimodo 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 /etcaqui:

/etc/php-5.2.8/

Dentro dele, havia um php.ini-recommendedarquivo no qual fiz algumas alterações e renomeei para php.inique o PHP pudesse usá-lo. Mas quando abri meu navegador e limpei meu histórico e fui até o http://localhost<CRM dir>/install.phpendereç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.phpscript? 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 .phpdiz 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_phpe 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:

  1. Construa PHP a partir do código-fonte. Na ./configureetapa, use --with-apxs2. Isso criará um módulo manipulador Apache 2 compartilhado para você.

    Certifique-se de ter apxso 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
    
  2. Depois que a construção estiver concluída (ou seja, depois de makeou make test), execute make 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-apxs2opçã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 LoadModuleprogramas 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_phpou php-fpm, nos arquivos de configuração. Para PHP5, foi php5_modulee mod_php5; para PHP7, é php7_modulee mod_php7, e para PHP8, é php_modulee 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 IfModuleseções: uma para ativar php-fpmse você não usar mod_phpe outra para ativar mod_phpse você estiver usando (ou seja, usando LoadModuleem 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 IfModuleseção como esta:

    <IfModule !mod_php.c>
      # Enable PHP-FPM configuration
    </IfModule>

E faça o mesmo para a mod_phpseçã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 httpdno centos7

informação relacionada