Utilizando múltiplas versões do PHP + Apache
Olá.
Esta é uma dica para utilizar em ambiente de desenvolvimento e/ou testes, onde é necessário utilizar mais de uma versão do PHP, sem que seja necessário setar uma para todo seu ambiente. Neste caso, a versão será definida via .htaccess, porém, somente é possível utilizar esta técnica se você puder compilar o PHP.
É realmente importante pra quem precisa dar suporte a ambientes e/ou sistemas legadosm ou testar a retrocompatiblidade de um código PHP. Parto do princípio que você já saiba compilar o PHP para seu ambiente, se não souber, procure no Google antes.
Resumo:
No source do PHP, substitua todas as entradas abaixo:
php5_module | php5_x_x_module |
libphp5 | libphp5.x.x |
application/x-httpd-php | application/x-httpd-php-5-x-x |
E compile normalmente. No PHP 5.3.x
pode ocorrer um erro informando que o libs/libphp5.3.x.so
não foi encontrado, basta entrar na pasta libs e mover/copiar o libphp.so para libphp5.3.x.so
.
Passo-a-passo:
Onde eu estiver especificando 5.x.x
ou 5_x_x
, isso significa a versão do PHP que você está compilando.
Baixe o source do PHP e descompacte para um diretório de sua preferência.
Com o auxílio de um editor de texto (TextMate, Notepad++, DreamWeaver, etc), procure em todo o diretório do source (que você descompactou anteriormente), e substitua:
Procure por: | Substitua por: |
---|---|
php5_module | php5_x_x_module |
libphp5 | libphp5.x.x |
application/x-httpd-php | application/x-httpd-php5-x-x |
Se você está se perguntando o que isso faz: essas substituições fazem com que cada versão diferente do PHP que você vá compilar seja definida como um novo módulo no Apache, ao invés de sempre ser php5_module.
A alteração do MimeType (terceira substituição) serve para que você consiga chavear entre as versões via .htaccess, pois não podemos colocar um LoadModule no .htaccess.
Compile sua versão do PHP normalmente, cada versão em um diretório separado.
Se você estiver compilando uma versão 5.3 do PHP, você pode receber um erro ao executar o comando make install, informando que o arquivo libs/libphp5.x.x.so não existe. Neste caso, basta copiar o arquivo libs/libphp5.so e tentar novamente.
Em alguns casos, o comando make install ativa o php5_module automaticamente no httpd.conf. Neste caso, revise o arquivo, pois em todas as minhas tentativas, por algum motivo obscuro, ele adicionava o módulo como o nome de php5_module, e não php5_x_x_module. Se isso acontecer, apenas renomeie o módulo.
Ainda é possível utilizar extensões dinamicamente no PHP, porém, você pode obter erros por estar usando uma extensão compilada para outra versão da qual você esteja rodando. Sugiro compilar as extensões estaticamente.
Sugiro cuidado ao definir a propriedade –with-config-file-path, para que o php.ini seja o diferente em várias versões do PHP. Você pode obter erros por definir alguma propriedade errada ou inexistente para uma versão específica do PHP.
Reinicie o Apache para as alterações terem efeito.
Para utilizar uma determinada versão (que você já compilou com este método) em um projeto no seu ambiente, basta adicionar a seguinte propriedade ao .htaccess do projeto:
1
AddType application/x-httpd-php5-x-x .php
Onde 5-x-x
é a versão do PHP que você deseja.
Dúvidas? Deixe um comentário.