我在google上得到的大多数结果是如何让两个版本同时在同一个服务器上运行,但在不同的URL上,但这不是我想要的。
例如,我想让http://localhost在同一个站点上同时运行PHP4和PHP5。 这是因为我有一个PHP4的旧代码在PHP5中执行时破坏了网站。
同一个站点也有一些只用PHP5编写的组件,所以我想在同一个站点同时运行两个PHP版本。
我在运行Apache的Windows XP,我不介意如果需要切换到IIS7。
我已经意识到与这个潜在的解决scheme相关的安全风险。
PHP4运行时和PHP5运行时不能同时执行一个PHP脚本。 只有一个解释器随时都在运行。 所以,不要执行“这几行PHP4”和“PHP5以上的其他”,然后在两者之间来回跳动。
但是可以连接两个单独的脚本。 创build正常的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解释器将inheritanceCGI环境,从而允许运行,就好像它是主脚本一样。 随着一些清理环境(正则expression式筛选所有variables),它也不必太担心安全问题。 (但是,你没有打扰更新代码,所以。)