Executando o PHP 4 e o PHP 5 ao mesmo tempo no mesmo site usando o Apache no Windows

1

A maioria dos resultados que recebo no google é como obter as duas versões em execução simultaneamente no mesmo servidor, mas em URLs diferentes, mas não é isso que eu quero.

Gostaria, por exemplo, de obter http://localhost para executar PHP4 e PHP5 ao mesmo tempo no mesmo site. Isso porque eu tenho um site que tem código antigo do PHP4 que é quebrado quando executado no PHP5.

O mesmo site também tem alguns componentes escritos somente em PHP5, então eu gostaria de rodar ambas as versões do PHP ao mesmo tempo no mesmo site.

Estou no Windows XP executando o Apache, não me importaria de mudar para o IIS7, se necessário.

Já estou ciente dos riscos de segurança associados a essa solução em potencial.

    
por user472755 15.11.2011 / 17:05

1 resposta

1

Você não pode ter um script PHP executado pelo tempo de execução PHP4 e pelo tempo de execução PHP5 ao mesmo tempo. Há apenas um intérprete em execução a qualquer momento. Portanto, nenhuma execução de "estas poucas linhas e PHP4" e as "outras por lá no PHP5" e pulando para frente e para trás entre as duas.

No entanto, é possível conectar dois scripts separados. Crie o script normal de saída do PHP e chame qualquer código PHP4 como este:

<?php
  // do some PHP5 code here
  code_here(...);

  // then invoke the script parts for PHP4
  passthru("php4-cgi.exe .../script2.php4");
   # MAYBE REQUIRES setenv("SCRIPT_FILENAME", ...); ETC. ON WINDOWS

  // then do some more PHP5 thingys
  ...
?>

O interpretador PHP4 herdará o ambiente CGI, permitindo que ele seja executado como se fosse o próprio script principal. Com alguma limpeza desse ambiente (regex filtrar TODAS as variáveis), também não precisa ser uma preocupação de segurança. (Mas você não se preocupou em atualizar o código em primeiro lugar, então.)

    
por 15.11.2011 / 18:12