Instalando várias versões do php mais extensões no freebsd

3

Atualmente, estou aprendendo a trabalhar com o FreeBSD. Ultimamente eu tenho tentado executar múltiplas versões php junto com seus respectivos pacotes. No entanto, pareço estar com problemas ao fazer instalações.

O local padrão para a instalação de php é /usr/local/etc/ , mas quero poder instalar php5.2 , php5.3 e php5.4 em /usr/local/etc/php52 , /usr/local/etc/php53 e /usr/local/etc/php54 , respectivamente.

Usando portas, eu simplesmente consegui isso fazendo cd /usr/ports/lang/php5x && make PREFIX="/usr/local/etc/php5x" install clean .

O problema agora é: como faço o mesmo para extensões de todo o meu PHP versions ? Quando eu tento instalar extensões php assim: cd /usr/ports/lang/php5x-extension && make PREFIX="/usr/local/etc/php5x/lib/php" install clean , eu recebo este erro

...
===>  PHPizing for php53-bcmath-5.3.17
env: /usr/local/bin/phpize: No such file or directory
*** Error code 127

Stop in /usr/ports/math/php53-bcmath.
*** Error code 1

Stop in /usr/ports/lang/php53-extensions.

Meu PHPize está localizado em /usr/local/etc/php5x/bin/phpize Então, como obtenho make ou o que quer que procure phpize no caminho certo? Existe um limpador, pode ser uma maneira mais simples de manter várias instalações php? Eu preciso conseguir isso por causa de problemas de compatibilidade de algum código legado que roda em 5.2 e quebra em 5.3.

Obrigado.

    
por jgtumusiime 20.11.2012 / 19:28

3 respostas

5

A variável que ninguém falou é chamada PHPBASE: Ele permite trabalhar com múltiplas instalações do PHP em um servidor FreeBSD, colocando cada um em seu próprio diretório. É então usado no make.conf para apontar módulos PHP específicos (php52-somethings vs. php54-somethings) no diretório "base" correto.

Eu já vi isso algumas vezes, mas não ousei experimentar, até agora.

Quando procurei um exemplo para você, agora encontrei um exemplo aparentemente melhor ...

Veja aqui:

link

Caso alguém (ainda) se pergunte por que alguém faria isso:

A chave é chamada de atualizações contínuas. É algo que você faz se precisar executar servidores para usuários reais e não apenas em seu próprio porão. Se você fornecer aos usuários um caminho rápido de atualização e for capaz de alternar entre versões, eles poderão migrar. Caso contrário, eles eventualmente migrarão também, não para a versão do PHP que você der a eles, mas para um provedor diferente.

    
por 05.04.2015 / 23:19
2

Sua melhor aposta seria como sugere Hennes: Crie uma cadeia para cada versão do Apache + PHP que você deseja usar . Isto tem uma série de vantagens, sendo as duas maiores isolamento (se seus sites PHP 5.2 forem hackeados, o dano está contido na Jail do PHP 5.2) e simplicidade de gerenciamento (trate as cadeias como se fossem duas instalações separadas do FreeBSD - uma executando PHP antigo, um executando o novo PHP - e você não precisa passar por nenhum aro).

Além da seção de manuais acima, talvez você queira considerar algumas das portas de gerenciamento da cadeia disponíveis. ezjail é muito bem visto e há alguns bons tutoriais sobre como usar mas existem muitos outros - pesquise jail na árvore de ports e você vai encontrá-los.

A grande desvantagem das prisões é que você estará executando um Apache discreto para cada versão do PHP que você deseja executar (o que significa, essencialmente, um endereço IP por cadeia). Se você tem apenas um IP e está fazendo uma hospedagem virtual baseada em nome, existem alguns hacks que você pode fazer (haproxy ou similar, e reencaminhamento para um back-end diferente baseado em hostnames), mas eles são todos feios à sua maneira.

A outra opção (a enorme arma de fogo a que me referi no meu comentário) é compilar o PHP como você tem feito com um PREFIX não padronizado, e depois instalar manualmente cada extensão - aprimorando seu caminho, vinculando o binário phpize ao local esperado ou fazendo uma construção manual completa.

Mantive os sistemas dessa maneira no passado (devido aos meus requisitos PHP altamente personalizados), mas nunca com várias versões. Você também precisará manter instâncias apache separadas (cada uma carregando a versão apropriada do PHP), o que não funcionará se você usar hospedagem virtual baseada em nome (semelhante a jails).

Com a abordagem não presa você também tem a opção de hackear coisas, então o Apache carrega múltiplas versões do interpretador PHP (ou roda o PHP como um CGI) que é mais amigável para hosts virtuais baseados em nome. Você só precisa tomar cuidado para configurá-lo para que a versão correta do PHP seja chamada para cada localização / tipo de arquivo. Se você estragar tudo, "Coisas estranhas" começam a acontecer (ou, se você tiver sorte, ele simplesmente quebra de forma horrível e você não passa horas depurando isso).

Dadas as duas opções Jails são uma opção muito superior - espere queimar um pouco mais de espaço em disco, mas o disco é barato e o isolamento e a facilidade de manutenção adicionados certamente valerão a pena se você não puder atualizar o código PHP 5.2 para jogar bem em uma versão mais recente.

    
por 20.11.2012 / 21:19
1

Se você ainda quiser ir junto e instalar várias versões do PHP. Você pode facilmente fazer isso com PHP + fast-cgi . Você pode contornar isso com PHP-FPM ou mod_fcgid para facilitar o envio para a versão correta do PHP. Aqui está um bom tutorial sobre Instalando várias versões . Use um website ou o vhost-config (apache) do aplicativo para escolher qual PHP deve ser executado.

É assim que você deve fazer a instalação das versões PHP de freebsd : Instale uma versão base do PHP a partir das portas, por exemplo PHP52 , e instale PHP53 , PHP54 da origem. Instalar várias versões de portas pode causar conflitos. Ou você pode simplesmente instalar todas as versões do PHP a partir do código-fonte.

    
por 24.11.2012 / 11:46

Tags