我即将将几个服务器从 PHP 5.1.6 升级到 PHP 5.3.x,但是,我们托管了许多旧网站,在应用程序代码中修复这些网站会很耗时。
我认为有两种解决方案:
- 将旧网站放在单独的兼容服务器上
- 进行最少的(向后不兼容的)修复并关闭错误报告
- 修复应用程序代码中所有向后不兼容和已弃用的功能
后两种选择并不可取,因为这将非常耗时——请记住,没有单元测试之类的东西。前者将产生额外的费用,因为我们必须支付和管理额外的盒子。
您是否还有其他建议尝试的选择,或者根据您的经验,管理遗留站点的最佳解决方案是什么?
干杯
答案1
如果您有一定的自由度,我建议您执行以下操作:
尝试使用不同的 Web 服务器(多个 Apaches、Apaches + Nginx、Apaches + Litehttpd 等...)配置为使用不同版本的 PHP 并处理对不同站点的不同请求?
http://share.ez.no/learn/ez-publish/multiple-apache-installations-howto
答案2
您迟早需要更新代码。请注意,旧版本的 PHP 未应用安全补丁,一段时间后管理多个不同平台会变得困难。我尝试了您的第一个解决方案,为旧网站使用旧服务器。问题是,这会耗费系统管理员的时间,尤其是当您有一天尝试完全切换平台时。
答案3
即使不进行迁移,有时也需要确保网站在受支持的 PHP 环境中运行(因为 PHP 5.1 在某些时候会不再受支持,例如可能会发现安全漏洞并且不会被修补)。
为了实现该目标,您需要在新环境中测试站点。
根据我的经验,单靠功能测试无法保证代码库没有错误,这仅仅是因为输入数据的高熵会导致程序的行为发生变化,尤其是在 Web 应用程序的情况下。
你需要做的是进行广泛的功能测试以及代码覆盖率分析。
您执行的测试越多,代码覆盖率就越接近 100%,从而确保更多代码已经过测试并且可以被视为无错误。
如果您不能通过基本的功能测试“自然地”提高代码覆盖率,那么您需要查看“未覆盖的”代码以尝试了解如何通过“有偏见的”测试来达到它。
一个非常有用的 PHP 代码覆盖工具是 XDebug,或者你可以看看这个问题:https://stackoverflow.com/questions/348850/code-coverage-tools-for-php以获得更全面的参考。