Pergunta

É possível ter várias versões do PHP em execução no mesmo caixa (como trilhos). Aqui está o meu problema, eu preciso para iniciar o desenvolvimento de um novo projeto e estava planejando usar PHP 5.3 para ele para que eu possa usar a última Zend Framework e registro ativo com ele.
No entanto, a máquina onde eu preciso hospedar meu aplicativo tem PHP 4.4 e existem vários outros aplicativos hospedados lá. Eu não quero para atualizar a versão do PHP no servidor, como no passado eu ter enfrentado uma série de problemas ao atualizar a versão do PHP e funções obsoletas.
Eu queria saber se é possível ter várias versões do PHP na mesma caixa e, em seguida, de alguma forma especificar a versão que você quer que sua aplicação de carga (semelhante ao rails)

Foi útil?

Solução

Sim, é possível. Na verdade, muitos servidores operam desta forma. Você pode ver .php4 e .php5 extensões ao longo do tempo, indicando qual a versão que determinado script deve ser tratado com.

ServerFault abordou esta questão

Correndo php4 e php5 ao lado uns dos outros

Outras dicas

Você pode executar várias versões do PHP na mesma caixa usando Docker.

Um exemplo de comando seria:

sudo docker run -d -p 8055:80 -v /var/www:/var/www \
  -v /etc/apache2/sites-available:/etc/apache2/sites-available \
  -v /etc/apache2/sites-enabled:/etc/apache2/sites-enabled \
  codeyourdream/apache-sendmail-php55

Aqui está o que este comando faz:

  • Ele encaminha o seu /var/www local, /etc/apache2/sites-available e /etc/apache2/sites-enabled para as pastas correspondentes do recipiente Docker. Se seus sites locais e / ou Apache configurações estão localizados em pastas diferentes, substituir a primeira parte do valor -v. Ou seja, O formato é: docker run -v /host/directory:/container/directory -other -options image_name command_to_run
  • Ele encaminha porta 8055 da sua máquina local para a porta 80 do recipiente Docker
  • Corre-se o recipiente de "codeyourdream / apache-sendmail-php55" imagem

Se você executar este comando, todos os seus sites locais devem estar disponíveis através da porta 8055 (via URLs ou seja, como http: // localSite: 8055 ) e processado por PHP 5.5

Veja https://codeyourdream.com/blog/how-run-multiple-php-versions-apache-one-linux-machine-using-docker para mais detalhes. nota filiação:. este é o blog do meu time

Uma possibilidade é usar uma versão do PHP como um módulo do Apache, ea outra versão como um CGI; mas uma idéia Eu meio que gosto melhor é ter:

  • Várias instâncias distintas de Apache,
  • Cada um escuta em uma porta diferente (por exemplo, PHP 4.4 na porta 44000, e PHP 5.3.1 na porta 53100)
  • E cada um usando uma versão diferente do PHP

Desta forma, você tem ambientes totalmente diferentes, que funciona de forma independente um do outro, e você pode configurar / modificar o que quiser em cada ambiente sem arriscar quebrar qualquer um dos outros.

(E se você não quer ter números de porta em URLs, acho que você pode colocar um proxy na frente de suas instâncias distintas Apache, então parece que há apenas um)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top