当php及其库不断升级时如何维护旧版本

Posted

技术标签:

【中文标题】当php及其库不断升级时如何维护旧版本【英文标题】:how to maintain older versions when php and its libraries keep upgrading 【发布时间】:2012-11-26 15:01:21 【问题描述】:

我一直在使用 xampp 包中包含的 sqlite 2。

在我安装了具有 sqlite3 的最新 xampp 包之后。

现在,当我运行我的代码时,我得到了错误,并发现 sqlite 2 不适用于捆绑包。

这样的事情发生在 php 及其所有相关库中,例如 split function others。

如果是本地系统没问题,我们无论如何都会更新它,但在共享主机中,当他们升级到新的 php 版本时,现有网页会出现错误。

我们如何知道 php 将删除某些函数并用其他新函数替换它,而不是保留相同的名称但具有升级的功能?

当他们升级或更改服务器中当前现有功能的版本时,会发生什么情况是网站中断。您可以在整个页面上看到错误。许多页面无法正常工作。如果不注意,seo 评级会下降。用户不会信任该网站。这也发生在我使用了一段时间的 wordpress 和 mediawiki 上,当他们最近升级 php 时,模块没有加载,而是出现了致命错误。这很讨厌。

在这种情况下,在特定的时间间隔内不断升级你的代码会很忙(每当 php 升级它们的功能时)

据我所知,这将永无止境。

在服务器端和本地主机中有什么解决方案。

【问题讨论】:

有人能说说为什么今天这个问题有两个反对票吗? 【参考方案1】:

这确实是个问题。唯一的解决方案是:

    在针对它们编写代码之前,请充分考虑您的依赖关系。 保持冷静。

在您决定使用任何一种特定技术之前,请先研究一下它是否会被弃用或不建议在未来使用。 PHP 人很擅长在手册中指出这些内容,因此阅读 php.net 上的相关页面通常就足够了。

PHP 开发人员对他们的弃用过程非常满意,他们的大多数 API 的弃用过程都非常缓慢。

您仍然需要保持在球上。关注不常见的官方公告,了解正在发生的变化以及您需要注意的地方。每个主要 PHP 版本的更改日志通常都值得研究。

如果您在系统上运行的代码经常在您不做的情况下更改,您还需要注意主机的公告。如果他们没有提前宣布重大变化,请寻找其他主持人。

构建您的错误处理程序,以便您通过电子邮件收到有关严重错误的通知。您可能需要包含一个脚本来检查主要依赖项的可用性并在它们丢失时通知您。

如果您有关键代码,则不应在无法为您提供对平台足够控制的共享主机上运行它。运行您自己的服务器并小心升级 PHP。旧版本会收到一段时间的维护更新是有原因的。

通常情况下,您有一个系统管理员来管理部署的代码和服务器,您应该与此人沟通您对服务器的要求,如果服务器发生一些重大变化,该人应该与您交谈。如果您就是这样的人,就像现在许多系统开发人员一样,您需要将这部分作为您的工作。

【讨论】:

【参考方案2】:

好问题。 我说你多虑了。 PHP 团队非常关心向下兼容性。我使用 PHP 已有 10 多年了,这段时间网络发生了很大变化,PHP 也是如此。更改正在经历一个非常长的弃用过程,并且在它们实际发生之前很长时间才被宣布。即便如此,在我记得的情况下,仍然可以使用较新版本的已弃用方式。

这一切都适用于 PHP 本身提供的 PHP 核心和扩展。

如果是 SQLlite,我不记得那里的交易是什么,从未真正使用过它。

在较新的 PHP 5 版本之一中,他们在日志级别引入了弃用位。 如果您将日志级别切换为E_ALL-1,如果您正在使用任何已弃用的功能,则会记录一行,因此您可以及早做出反应。

http://php.net/manual/en/function.error-reporting.php

此外,还发布了一个折旧列表和向后不兼容的更改,例如

http://php.net/manual/en/migration54.incompatible.php

这里宣布的所有更改在很多年前都被视为不好的做法,因此现在没有人应该更改代码。

我希望这不再杀死你:) 祝你好运

【讨论】:

FWIW,他们决定为 SQLite 3 编写新的接口代码,因为底层库发生了巨大变化。虽然 2.x 没有被弃用,但它变得越来越不常见。 3.x 已经问世多年了。

以上是关于当php及其库不断升级时如何维护旧版本的主要内容,如果未能解决你的问题,请参考以下文章

VS在.NETFramework升级时遇到类库冲突如何解决

如何从php5升级到php7

Gradle依赖管理:如何在android项目中维护新旧版本的依赖项?

如何在 phpMyAdmin 中将 MySQL 版本升级到最新版本?

如何使用 Homebrew 安装指定版本的工具

卸载升级时如何摆脱wix中未使用的dll