应当更新PHP版本的原因
首先
随着项目的推进,我一直认为更新PHP版本是必要的,但并没有明确了解为什么需要升级版本,所以我思考了一下。
Contents
-
- 公式支援期限
-
- 性能提升
-
- 對新語法的應對
-
- 摘要
- 參考文獻
公式支持期限和安全漏洞
PHP版本和支持期限清单
支持期限和安全
即使使用的是已经过期的版本,也不会突然无法运行。
然而,当支持终止时,将没有安全支持,暴露给未修复的安全漏洞。
顺便提一下,在2016年,PHP存在超过100个安全漏洞,其中包括拒绝服务攻击、代码执行、溢出、内存破坏、跨站脚本攻击、目录遍历、绕过以及信息获取等问题。
了解和发现脆弱性。
关于与PHP相关的许多漏洞,每个漏洞都被分配了一个特定的识别号,称为CVE(共同漏洞和曝光)。可以利用这些CVE获取漏洞信息,通过CVE详情或者日本语言的JVN(日本漏洞通报)获取信息。
此外,还有一个名为FriendsOfPHP/security-advisories的PHP项目和库漏洞监视库似乎也存在。
脆弱性的应对措施 (Cuì ruò de duì cuò shī)
在自己的项目中,我们需要了解所使用的 PHP 库及其版本,并监视其安全漏洞,必要时切换到可进行安全处理的版本。
表现的提升
针对不同的PHP版本进行基准测试。
以下是在Laravel 8.21.0环境中进行验证的数据,包括版本7.3、7.4和8.0。
测试内容为在一个URL上同时连接15个用户,发送10,000个请求,结果应该是每秒请求数越多越好。
(详细的执行环境请参考参考文献)

Laravel 8.21.0 PHP 7.3 的基准测试结果为:574.67 次请求/秒
Laravel 8.21.0 PHP 7.4 的基准测试结果为:602.15 次请求/秒
Laravel 8.21.0 PHP 8.0 的基准测试结果为:623.78 次请求/秒?
现在的结果是,相比于PHP 7.3,PHP 8.0在每秒执行的请求方面多出了8.54%。
其他性能提升功能
有时候,一些功能如PHP7.4中的Preloading和PHP8.0中的JIT,能够通过版本升级来加速应用程序。
对于新的语法规则所做的应对
通过语言的更新,可能会添加新的编码方式,从而进一步提高便利性或减少代码的负担。
然而,了解和不了解新的语法之间存在相当大的差异,主要有以下三个问题。
-
- コードレビューができない
-
- ライブラリの処理を追うことができなくなる
- ネット上の新しい情報が理解できない
总结
即使是旧版本的PHP,也不会突然导致应用程序无法运行。
-
- セキュリティサポートが終了してしまうと脆弱性の対策ができない。
-
- パフォーマンス改善の機会を失う。
- 新文法の記述を知ることができないです。
参考资料
-
- PHPのリリース日とサポート期限
-
- PHP における脆弱性との向き合い方とその対策方法
-
- PHP 5.6、7.0、7.1、7.2、7.3、7.4または8.0のベンチマーク(2021年)
-
- PHPのサポートされているバージョンを使用する理由について
- 1. CVE Details(引用)