Ir para conteúdo
  • Cadastre-se

Mantendo Várias Versões Do Php


Posts Recomendados

A dica abaixo pode ser aproveitada por programadores e também por provedores de hospedagem.

É possível manter várias versões do PHP em um mesmo servidor aplicando esta configuração a nível de usuário, domínio ou diretório.

 

O primeiro passo é rodar o script cujo código está no fim desta postagem. Ele instalará as versões 5.2.17, 5.3.25, 5.4.18 e 5.5.2.

O diretório de instalação será /opt/php. Além disso, atenha-se aos seguintes detalhes, que podem ser mudados por você no código:

 

São instalados as extensões: MySQL (considerando o diretório padrão deste) , CurlSSL (considerando que este já está instalado em /opt/curlssl) e IMAP com suporte a SSL (/opt/php_with_imap_client/). Se você tem cPanel, espera-se que você já o tenha compilado (EasyApache) com estas opções; se não, remova-as do código.

Você também pode aproveitar e acrescentar outras opções de compilação ao código.

 

Executando o script teremos 4 versões dentro do diretório /opt/php/<VERSAO> (considere apenas os dois primeiros números, ex.: 5.4)

 

Para configurar a execução, digamos da versão 5.3.35 para o usuário FULANO, façamos assim:

 

Crei um arquivo .htaccess dentro de /home/fulano/public_html e coloque o seguinte:

Options +ExecCGI
AddHandler php-cgi .php
Action php-cgi /cgi-bin/php.cgi

Copie o executável do PHP e mude o proprietário dele

cp /opt/php/5.3/bin/php-cgi /home/fulano/public_html/cgi-bin/php.cgi
chown fulano.fulano /home/fulano/public_html/cgi-bin/php.cgi
chmod +x /home/fulano/public_html/cgi-bin/php.cgi

Você pode também criar o arquivo .htaccess apenas dentro de determinado diretório, fazendo com que determinada versão do PHP seja executada dentro dele.

Mesmo usuários sem acesso root podem instalar múltiplas versões. Para isso você precisa:

 

1) Mudar no script todas as ocorrências do diretório /opt/php para, por exemplo, /home/usuario/php

2) Ter acesso SSH ou rodar um script com extensão .cgi (em Perl ou PHP) e executar o script de instalação (ex.: system ('sh multiphp.sh'))

#!/bin/bash

ARRAY=(5.2.17 5.3.25 5.4.18 5.5.2)
mkdir -p /opt/php

for i in {0..3}
do

   cd /opt/php
   version=5.$(($i +  2))
   echo "Instalando o PHP ${ARRAY[$i]}"
   wget -q http://museum.php.net/php5/php-${ARRAY[$i]}.tar.gz -O php-${version}.tar.gz
   tar -C ${version} -xzf "${version}.tar.gz"
   cd "${version}/php-${ARRAY[$i]}"

   export EXTENSION_DIR=/opt/php/${version}/extensions
   ./configure --prefix=/opt/php/${version} --with-config-file-path=/opt/php/${version}/etc --enable-ftp --enable-libxml --with-libxml-dir=/opt/xml2/ --enable-sockets --with-curl=/opt/curlssl/ --with-imap=/opt/php_with_imap_client/ --with-zlib --with-imap-ssl=/usr --with-kerberos --with-libdir=lib64  --with-mysql=/usr --with-mysql-sock=/var/lib/mysql/mysql.sock --with-openssl=/usr --with-pic  --with-openssl-dir=/usr --with-pcre-regex=/opt/pcre --with-zlib-dir=/usr
   make && make install
   rm -vf /opt/php/php-${version}.tar.gz

done

Não há bem nem mal que dure para sempre. Um dia tudo acaba.

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.
  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...

Informação Importante

Concorda com os nossos termos?