Назад | Перейти на главную страницу

Одновременный запуск PHP 4 и PHP 5 на одном сайте с использованием Apache в Windows

Большинство результатов, которые я получаю в Google, заключается в том, как заставить обе версии работать одновременно на одном сервере, но с разными URL-адресами, но это не то, что я хочу.

Я бы хотел, например, получить http://localhost для одновременного запуска PHP4 и PHP5 на одном сайте. Это связано с тем, что у меня есть веб-сайт, на котором есть старый код из PHP4, который ломается при выполнении в PHP5.

На том же сайте также есть некоторые компоненты, написанные только на PHP5, поэтому я хотел бы запускать обе версии PHP одновременно на одном сайте.

Я использую Windows XP с Apache, я бы не прочь переключиться на IIS7, если это потребуется.

Мне уже известно о рисках безопасности, связанных с этим потенциальным решением.

Вы не можете иметь один сценарий PHP, выполняемый одновременно средой выполнения PHP4 и средой выполнения PHP5. В любой момент времени работает только один интерпретатор. Итак, никакого выполнения «этих нескольких строк и PHP4» и «других там в PHP5» и перехода между ними.

Однако можно подключить два отдельных скрипта. Создайте обычный сценарий вывода PHP и вызовите любой код PHP4 следующим образом:

<?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
  ...
?>

Интерпретатор PHP4 унаследует среду CGI, что позволит работать так, как если бы это был сам основной сценарий. С некоторой очисткой этой среды (регулярное выражение фильтрует ВСЕ переменные) это также не должно быть большой проблемой безопасности. (Но вы не удосужились обновить код, так что.)