PHP 是当今网络上最流行的脚本语言之一。根据 W3Techs 的统计,在所有使用服务器端编程语言的网站中,有 77% 以上的网站使用 PHP。这意味着,在你访问的每 10 个网站中,几乎有 8 个都可能以某种形式使用了 PHP,这也意味着 PHP 并没有消亡。当然,PHP 在 WordPress 生态系统中也扮演着非常重要的角色,因为整个内容管理系统都是基于 PHP 构建的。
需要快速检查 PHP 版本?创建一个 phpinfo 页面。
我们今天面临的一个困境是,许多企业、开发人员和主机在支持最新的 PHP 版本方面已经落后了。下面的一些数据可能会让你大吃一惊。今天,我们想讨论一下为什么每个人都必须使用最新的 PHP 版本,这不仅是出于安全考虑,也是为了获得更好的性能和支持。
旧的 PHP 版本
与任何软件一样,PHP 也有一个发布生命周期,必须遵守这个周期才能不断向前推进和改进。 PHP 的每个主要版本在发布后通常都会得到两年的全面支持。在此期间,错误和安全问题会定期得到修复和打补丁。
WordPress 支持的 PHP 版本
您还可以看到最新版本的 PHP 是如何处理的。
目前支持的 PHP 版本
PHP 5.6、7.0、7.1、7.2、7.3 和 7.4 生命周期
寿命终止意味着这些版本将不再有安全支持,并可能暴露于未修补的安全漏洞。
- 截至 2022 年 11 月 28 日,PHP 7.4 的生命周期已结束。
- 截至 2021 年 12 月 6 日,PHP 7.3 已达到生命周期终点。
- 截至 2020 年 11 月 30 日,PHP 7.2 的生命周期已结束。
- 截至 2019 年 12 月 1 日,PHP 7.1 达到其生命周期终点。
- 截至 2018 年 12 月 3 日,PHP 7.0 达到其生命周期终点。
- 截至 2018 年 12 月 31 日,PHP 5.6 也达到了生命周期的终点。这正式标志着 PHP 5 一个时代的结束,因为第一个版本 5.0 是在 14 年前推出的。
据 WordPress 官方统计页面显示,截至发稿时,超过 55% 的 WordPress 用户仍在使用 PHP 7.4 或更低的版本。如果将这一数据与其他已停用的 PHP 版本结合起来,那么目前有高达 85% 的用户使用的 PHP 版本到 2022 年 11 月就不再受支持了。
如果你看看 WordPress 社区以外的统计数字,情况就更可怕了。根据 W3Techs 的统计,目前有 22.9% 的使用 PHP 的网站使用 PHP 5。
这不仅从安全角度看是个坏消息,而且因为仍有很大一部分 WordPress 网站没有利用 PHP 8.2 的额外性能增强功能。
WordPress PHP 版本统计
为什么新版本的采用速度缓慢?
新版本采用速度不快的主要原因可能来自几个不同的因素:
- 首要原因是,企业主不知道或不关心他们的 PHP 版本。当然,这在某些情况下是可以理解的,因为我们并不指望每个人都知道这一点。 很多时候,这个责任落在了开发人员、代理商或主机上。
- 开发人员需要时间更新代码以支持新版本的 PHP。这包括那些开发网站、主题、插件等的开发人员。
- 更新代码不仅需要精力和时间,还需要大量测试以确保兼容性。仅 WordPress 存储库就有超过 49,000 个插件!
- 许多 WordPress 主机都不愿意推送 PHP 更新版本,因为如果导致网站崩溃,最终可能会产生额外的支持单。作为一家提供应用程序、数据库和托管服务的 WordPress 托管商,我们非常理解这一点,但从我们的经验来看,这通常是反过来的。我们看到的许多支持问题都是由旧 PHP 版本引起的。
- 开发人员或代理公司在与客户和其他第三方应用程序打交道时,可能会陷入进退两难的境地,他们不愿意花费资源进行更新。
不过,尽管如此,这仍然不能成为使用过时的、不受支持的 PHP 版本的借口,而且实际上可能会拖慢 WordPress 网站的运行速度。好在目前已经取得了一些进展。你可以看到,PHP 仍然占据着巨大的市场份额,而且不会有任何变化。
更新 PHP 版本的原因
看看下面的一些原因,为什么你应该考虑更新(如果你还没有更新的话)。
1. 安全
更新 PHP 的最重要原因之一是确保您运行的版本完全支持并定期修补安全漏洞。PHP 5.4 自 2015 年以来就没有打过补丁。PHP 5.5 自 2016 年以来就没有打过补丁。但值得注意的是,一些操作系统供应商仍会更新旧版本的 PHP(如果其中包含的话)。
根据 CVE Details,2016 年是 PHP 安全漏洞最严重的一年,共报告了 100 多个问题。这些问题包括 DoS、代码执行、溢出、内存损坏、XSS、目录遍历、绕过和获取信息类型。2017 年是 2000 年以来第三糟糕的一年,出现了 40 多个漏洞。
按年份分列的 PHP 安全漏洞
甚至 PHP 本身也对保持与时俱进给出了一些反馈意见:
与其他大型系统一样,PHP 也在不断接受审查和改进。每个新版本通常都会包含大大小小的改动,以增强安全性并修复任何缺陷、配置错误和其他会影响系统整体安全性和稳定性的问题。与其他系统级脚本语言和程序一样,最好的方法是经常更新,并保持对最新版本及其变化的了解。PHP,与时俱进。
推荐阅读: 如何提高 WordPress 中的 PHP 内存限制。
2. 性能
随着 PHP 7.4、8.0、8.1 和 8.2 的发布,性能大幅提升! 8.1 版的性能提升更大,而 8.2 版刚刚发布。事实上,8.2 的性能提升如此之大,以至于它应该优先于你可能在 WordPress 网站上进行的许多小优化。
我们还运行了自己的 PHP 基准测试。与上述基准测试类似,我们发现 PHP 8.0 和 8.1 每秒执行事务(请求)的速度比旧版本快得多。
WordPress 5.9-RC2 PHP基准测试
Christian Vigh 还发布了 PHP 性能对比,他发现 PHP 5.2 比 PHP 7 慢 400%。
纯 CPU 基准测试结果比较
3. 支持
支持是您希望使用最新和受支持的 PHP 版本的另一个原因。很多时候,插件和主题的开发者只能对旧版本提供支持。这主要是因为时间有限,没有时间测试兼容性。当你在旧版本上运行时,最终会出现问题,你可以在 WordPress 论坛上亲眼目睹这种情况。下面是一个常见的错误,通常是由于旧版本的 PHP 及其处理某个函数的方式造成的:
Parse error: syntax error, unexpected ‘’ (T_VARIABLE), expecting function (T_FUNCTION) in /pub/file.php on line xxx
你可以在 WordPress 论坛上搜索 “unexpected T_Function“,会出现 2000 多个主题,其中很多都是最近几天的结果。下面是最近出现的几个问题,都是由于运行了旧版本的 PHP 导致的:
这些线程中的很多都是因为运行了过时的 PHP 版本。不过,由于 PHP 7 兼容性问题而被打开的线程也有同样的情况。这表明 WordPress 开发社区仍在努力追赶新版本的 PHP。
4. 面向开发人员的新功能
如果可以的话,大多数 WordPress 开发人员都希望只在较新版本的 PHP 上工作,原因很简单,因为在 PHP 5.2 和 PHP 7.4 之间增加了许多新功能。PHP 7 和 7.3 的一些变化包括
- 组合比较运算符
- 空聚合运算符
- 新的类型提示
- 匿名类
- 可归零类型
- 可迭代和 void 返回
- 多重捕获异常处理
- 可在列表中使用的键
- 更多负数字符串偏移
- 数字运算符和畸形数字
- HTTP/2 服务器推送
- 预加载
- 数组表达式中的展宽运算符
- 箭头函数 2.0(短闭包)
- 空凝聚赋值操作符
- 类型属性 2.0
- 弱引用
- 变量返回和变量参数
- 新的自定义对象序列化机制
支持旧版本的东西并不好玩。不幸的是,许多开发人员不得不支持各种版本。
PHP 8.0 中还有更多新功能。其中最重要的包括
- 已命名参数
- 联合类型
- 构造函数属性推广
- 自定义对象序列化
- 匹配表达式
- 空安全操作符
- 改进类型系统和错误处理
紧随其后的是 PHP 8.1 和 PHP 8.2。这两个版本都包含新功能、弃用和更改。
确保主机支持最新的 PHP 版本
虽然花了点时间,但 WordPress.org 官方要求现在建议使用运行 PHP 7.4 或更高版本的主机。
Yoast 最近发表了一篇名为 “整顿你的主机” 的好文章。在这篇文章中,Joost de Valk 详细描述了真正的问题是主机提供商没有更快地采用PHP 7.4,即使他们采用了,也没有鼓励用户升级。Yoast 将对此采取一些措施。从 Yoast SEO 4.5 开始,他们将在 WordPress 仪表板上为运行 PHP 5.2 的网站显示一个通知。 这个通知会很大、很丑,而且不可更改。
请查看我们的深入指南,了解如何在 WordPress 网站上安全地更新 PHP。
检查当前的 PHP 版本
也许您不知道自己的 WordPress 网站目前使用的是哪个版本的 PHP。看看下面这些不同的方法就知道了。
1. 使用 Pingdom 检查 PHP 版本
使用 Pingdom 或 Google Chrome Devtools 等工具是检查 PHP 版本的最简单方法之一。第一个 HTTP 请求头通常会显示版本。
在 Pingdom 中检查 PHP 版本
这依赖于主机不修改 X-Powered-By
标头值。出于安全考虑,有些主机可能会删除该值。如果是这样,您可能看不到 PHP 版本,在这种情况下,您需要使用下面的其他选项之一。或者你也可以随时联系你的主机询问。
2. 检查 WordPress 中的 PHP 版本
如果您运行的是 WordPress 5.0 或以上版本,您可以在 “站点健康” 工具下看到 PHP 版本。
WordPress 站点健康工具 PHP 版本
3. 用文件检查 PHP 版本
您还可以通过 FTP 向服务器上传文件来检查 PHP 版本。
Step 1
创建一个名为 phpinfo.php 的空白文件。在该文件中粘贴以下内容:
<?php echo 'Current PHP version: ' . phpversion(); ?>
Step 2
将文件上传到 WordPress 网站的根目录。
上传 phpinfo.php 文件
Step 3
然后浏览到文件的位置:domain.com/phpinfo.php。然后就会看到当前 PHP 版本的读数。
在浏览器中检查 PHP 版本
不精通技术或没有预算的用户该怎么办?
我们意识到,仍有成千上万的 WordPress 网站与新的 PHP 版本不兼容,无论是由于插件还是主题的老旧。对于不太精通技术的用户或没有预算的用户来说,最好的办法是什么?
以下是一些建议:
- 如果您还没有更新插件和主题,请务必将其更新到最新版本。
- 联系插件或主题的开发人员,要求他们添加/修复对 PHP 7.2、7.3、7.4 或 8.0(或您试图更新到的当前版本)的支持。在逐步淘汰 PHP 版本之前,我们会给客户提个醒,以便他们在需要时有时间做这件事。这对于没有预算聘请开发人员的客户来说尤为重要。
- 寻找能提供相同功能且与 PHP 版本兼容的替代插件。由于 WordPress 拥有庞大的资源库和数以千计的高级插件和主题,你几乎可以保证所有东西都有替代品。
- 对于那些有预算的用户,可以聘请 WordPress 开发人员来解决问题。
如何更新 PHP
准备好更新了吗?很好,但您首先要做的一件事就是测试您的网站,以确保兼容性。您可以在本地测试 WordPress 网站,或者更好地利用暂存环境,因为这将更接近实时生产网站。安全总比遗憾好!
请记住,如果您要从旧版本的 PHP 升级,请确保同时升级您的 WordPress 安装。新版本的 PHP 和 2 年前版本的 WordPress 可能不会有什么好结果。一旦你测试了自己的网站并准备好更新 PHP,这里有一些资源可以让你快速上手。
查看我们的深入指南,一步一步了解如何在 WordPress 网站上安全地更新 PHP。
使用宝塔更新 PHP
如果您是宝塔面板客户,您可以进入宝塔面板管理后台,点击右侧的“软件商店”菜单,在应用搜索输入“php”,即可查找可安装的各种 PHP 版本。点击你需要升级安装的 PHP 版本所对应的“安装”,即可快速在你的服务器上安装部署新的 PHP 版本。
安装 PHP 版本
您可以通过点击网站,进入 “工具”,选择不同的 PHP 引擎,轻松更改 PHP 版本。我们目前有 PHP 8.0、8.1 和 8.2 版本可供选择。
完成新的 PHP 版本安装后,还是软件商店界面,选择应用分类未“已安装”,找到软件名称为“phpMyAdmin”,点击“设置”操作,在弹窗界面即可切换已安装的 PHP 版本。
切换 PHP 版本
通过 cPanel 更新 PHP
如果您的主机使用 cPanel,它们很可能已经为您提供了更改 PHP 版本的选项。只需登录 cPanel,在 “Software” 类别下点击 “Select PHP Version” 即可。
在 cPanel 中选择 PHP 版本
然后,您可以选择主机支持的 PHP 版本。
cPanel 中的 PHP 7
手动更新服务器上的 PHP
如果您管理自己的服务器,我们建议您查看 PHP 官方安装文档,因为不同的操作系统会有不同的说明。您需要查看函数、类、封装器、扩展、模块等方面的变化。下面是一些迁移指南的链接:
- 从 PHP 5.5.x 迁移到 PHP 5.6.x
- 从 PHP 5.6.x 迁移到 PHP 7.0.x
- 从 PHP 7.0.x 迁移到 PHP 7.1.x
- 从 PHP 7.1.x 迁移到 PHP 7.2.x
- 从 PHP 7.2.x 迁移到 PHP 7.3.x
- 从 PHP 7.3.x 迁移到 PHP 7.4.x
- 从 PHP 7.4.x 迁移到 PHP 8.0.x
- 从 PHP 8.0.x 迁移到 PHP 8.1.x
- 从 PHP 8.1.x 迁移到 PHP 8.2.x
小结
如果您还没有升级到 PHP 8.0、8.1 或 8.2,现在正是考虑升级的时候。这不仅是因为您希望运行在受支持的软件上,而且还能保证性能优势! 如果您当前的主机还不支持 PHP 8.0、8.1 或 8.2,我们强烈建议您寻找新的主机。同样,主题和插件也是如此。如果开发者还没有发布补丁,那么可能是时候寻找其他替代品了。
您最近是否迁移到了 PHP 8.0、8.1 或 8.2?我们想在下面听听您的想法。迁移是否容易?或者您可能还在等待第三方。
评论留言