尽管有人预测它会终结,PHP 仍然驱动大量流行网站。了解它如何演进、当前优势,以及何时选择 PHP。

“PHP 已死”很少真正意味着“没人用 PHP 了”。大多数情况下,这句话是“PHP 不再是那个令人兴奋的新事物”或“我曾经用它遇到过糟糕经历”的缩写。这两种说法差别很大。
当有人宣称 PHP 已死时,他们通常在回应感知与个人经历的混合:
Web 开发世界的注意力很短。每隔几年,就有新的栈承诺更干净的架构、更好的性能或更愉快的开发体验——于是旧的主流工具就成了笑柄。
PHP 的成功反过来也带来问题:它上手容易,所以早期写了大量糟糕代码。最糟的例子变成了梗,而梗往往超越了上下文。
PHP 不需要持续的热度也能保持相关性。它默默地支撑着大量真实流量——尤其是通过 WordPress——并且仍然是在几乎任何网站托管上都可行的实用选项。
本文并不是为某种偏爱语言辩护,而是讲现实:PHP 今天在哪些方面有优势、在哪些方面薄弱,以及这对你现在构建或维护软件时意味着什么。
PHP 起初是为了解决实际问题,而不是打造宏大平台。上世纪 90 年代中期,它本质上是一组嵌入在 HTML 中的简单脚本——很容易放到页面上就能得到动态输出。“放到服务器上就能运行”的心态成为了 PHP 的基因。
随着网络增长,PHP 4,尤其是 PHP 5,借助廉价的共享主机浪潮快速传播。主机商只需启用一次 PHP 模块,成千上万的小站点就能在不做特殊配置的情况下使用服务器端脚本。
这个时期也塑造了 PHP 直到今天仍带着的声誉:大量拷贝粘贴的片段、不一致的编码风格,以及多年不做大重构的应用。
长期以来,PHP 最大的优势是可达性,而不是速度。PHP 7 改变了这一点。引擎的大幅重构带来了显著的性能提升和更低的内存使用,这对从小博客到高流量 web 应用都非常重要。它也表明 PHP 并非停滞不前,而是在愿意对核心进行现代化改造。
PHP 8 及其后的版本继续推动“现代 PHP”:更好的类型特性、更清晰的语法和更一致的行为。这些变化并不会神奇地修复旧代码,但它们让新代码库更可预测、更易维护。
PHP 对向后兼容性的承诺是它保持高采纳率的重要原因。你可以升级主机、更新版本而让许多旧应用继续运行。代价是互联网积累了长长的遗留代码尾巴——这些代码仍在运行、仍被部署、并持续影响人们对 PHP 的看法。
PHP 并不是因为最优雅而赢得早期 web 开发,它是因为最易接近而取胜。
长期以来,把动态内容放到线上最简单的方式很直接:买个便宜的主机,上传一个 .php 文件,它就能运行。没有特殊服务器配置、没有复杂的部署流水线,也不用安装额外运行时。那种“放个文件刷新浏览器”的循环让 PHP 感觉像是 HTML 的延伸,而不是一门独立的工程学科。
PHP 与 web 的工作方式契合:浏览器请求页面,服务器运行代码,返回 HTML,结束。这个模型匹配了典型站点的需求——表单、会话、登录、内容页面——无需让开发者考虑长时间运行的进程。
即便今天,这种设计仍然很适合许多产品:营销站点、内容驱动的应用和 CRUD 密集的仪表盘。
大多数早期 web 应用只是“读写一些数据”。PHP 使这件事变得容易:连接数据库、执行查询、渲染结果。这种简便性帮助无数小企业快速交付功能——那还是“全栈”都不是一个职位的年代。
一旦 PHP 无处不在,它就产生了自我重力:
这段历史仍然重要。网络建立在连续性之上:维护、扩展和集成已有的东西。PHP 覆盖了共享主机、CMS 生态以及像 Laravel 和 Symfony 这样的框架,选择 PHP 不仅是选择一门语言——也是选择一条成熟的网络开发道路。
WordPress 是 PHP 持续“有用”的最大原因。当网络很大一部分基于同一个 PHP 平台时,需求不仅来自新项目——还来自多年(有时是几十年)的持续更新、内容变更和扩展开发。
WordPress 让发布变得可及,并且能在廉价共享主机上运行良好。这个组合促使主机商为 PHP 优化,并使“PHP + MySQL”成为几乎任何主机服务的默认包。
对于企业来说,WordPress 的主题和插件经济是其真正引擎。团队往往可以购买插件、添加主题并快速上线,而不是定制开发。这使得大量生态仍以 PHP 编写、以 PHP 维护,并部署到对 PHP 友好的主机上,从而保持了 PHP 的相关性。
许多组织继续运行现有安装,原因包括:
实际上,这意味着持续的维护工作:安全补丁、插件更新、性能优化和渐进式现代化。
WordPress 并非停留在过去。现代构建常用 REST API、区块编辑器(Gutenberg),并越来越多地采用“无头”(headless)方案:WordPress 管理内容,而独立前端来消费它。即便前端移动了,PHP 在后端仍然是核心——驱动管理后台、内容模型、权限和企业依赖的插件钩子。
“现代 PHP”通常并不是指某个特定框架或风潮式的重写。它指的是按照自 PHP 7、尤其是 PHP 8+ 推崇的方式来写代码:更清晰的代码、更好的工具链、更少意外。
如果你对 PHP 的记忆停留在松散数组和神秘警告上,PHP 8 会让你感觉不同。
更好的类型系统是这种转变的重要部分。你可以为函数参数和返回值添加类型提示,使用联合类型(例如 string|int),并依赖引擎更一致的行为。它不会强制你在所有地方都严格,但可以更容易回答“这个值应该是什么?”
PHP 8 还引入了减少样板代码并更清晰表达意图的特性:
match 表达式 提供了比冗长的 switch 更清晰、更安全的替代方案。现代 PHP 在尽早报告问题方面更有倾向。错误信息更友好,许多致命错误以更清晰的异常被捕获,常见的开发设置会把 PHP 与静态分析和格式化工具搭配,以在进入生产前发现问题。
PHP 本身通过更好的默认设置和更严格的边界逐步改进其安全态势:更强的密码 API、更好的加密选项,以及对常见失败情况更一致的处理。这不会自动“保障你的应用安全”,但它减少了能让你踩雷的陷阱数量。
现代 PHP 代码通常组织成小而可测试的单元,通过 Composer 包来安装,并以一种新同事能快速理解的方式结构化。比起任何单一特性,这种转变更能让现代 PHP 与许多人记忆中的语言感觉截然不同。
PHP 的性能故事过去常被描述为“解释型”。今天更准确的说法应当涉及到编译、缓存,以及你的应用如何使用数据库和内存。
OPcache 将预编译的脚本字节码保存在内存中,这样 PHP 不需要在每次请求时解析和编译相同的文件。这大幅减少了 CPU 工作、降低请求延迟并提高吞吐量——通常无需改动任何应用代码。
对于许多站点来说,启用并调优 OPcache 是最大的“免费”改进:更少的 CPU 峰值、更稳定的响应时间,以及在共享主机和容器中更高的效率。
PHP 8 引入了 JIT(即时编译)。它能加速 CPU 密集型工作负载——例如数据处理、图像操作、数值运算或长时间运行的 workers。
但典型的 web 请求经常受制于其他因素:数据库调用、网络 I/O、模板渲染、外部 API 等。在这些情况下,JIT 通常不会显著改变用户感知的速度。它并非无用,而是对大多数 CRUD 风格的应用不是万能开关。
性能取决于整个栈:
团队通常先做性能分析再进行针对性修复:在安全的地方添加缓存、减少昂贵查询、剔除沉重依赖(例如过于复杂的 WordPress 插件)。这种方法不如追逐基准测试那么光鲜,但能可靠改善真实指标(如 TTFB 和 p95 延迟)。
PHP 之所以保持相关不仅因为它无处不在,而是生态学学会了以有纪律的方式构建与共享代码。最大的转变不是语言的单一特性,而是共享工具与约定的兴起——它们让项目更易维护、升级与协作。
Composer 让 PHP 变成了以依赖为先的生态,类似于其他社区的预期。团队不再把库复制到项目中,而是声明依赖、锁定版本并可靠地复现构建。
这也促进了更好的打包实践:库变得更小、更聚焦、更容易在不同框架与自定义应用间重用。
PHP-FIG 的 PSR 标准提升了工具与库之间的互操作性。当自动加载(PSR-4)、日志(PSR-3)、HTTP 消息(PSR-7)、容器(PSR-11)等存在共同接口时,你可以在不重写整个应用的情况下替换组件。
在实践中,PSR 让 PHP 项目感觉不那么被框架锁定。你可以组合最优包,同时保持代码库一致。
Symfony 将专业工程习惯带入了主流 PHP:可复用组件、清晰的架构模式和长期支持策略。即便不使用完整框架,许多开发者在底层也依赖 Symfony 组件。
Laravel 则让现代 PHP 更易上手。它普及了一套关于路由、迁移、队列和后台作业的约定,以及一致的开发体验,推动团队走向更清晰的结构和更可预测的项目。
工具链与框架同步成熟。PHPUnit 成为单元与集成测试的默认选择,使回归防护成为正常工作流的一部分。
在质量方面,静态分析工具(如 Psalm/ PHPStan)帮助团队在不运行代码的情况下检查类型、代码路径和潜在错误,使得重构遗留代码更安全并保持新代码一致性——这在跨版本升级时尤其重要。
PHP 最大的优势不是 PHP 8 的单一特性或某个著名框架,而是累积的生态:库、集成、约定以及已经知道如何交付与维护 PHP 应用的人。这种成熟度不会在社交媒体上成为热议,但它能悄然降低风险。
当你构建真实产品时,你花的时间更少在写“核心”代码上,而更多在把支付、邮件、日志、队列、存储、认证和分析等拼接在一起。PHP 的生态在这方面异常完整。
多年前 Composer 就标准化了依赖管理,这意味着常见需求已由维护良好的包解决,而不是复制粘贴片段。Laravel 和 Symfony 生态提供了电池齐全的组件,而 WordPress(优劣并存)提供了无尽的集成和插件。结果是:更少的重复发明、更快的交付、更清晰的升级路径。
一门语言能够“存活”部分原因是团队能否补足人员。PHP 在教学与实际使用中都很普遍,许多全栈开发者熟悉它。即便某人没用过 Laravel 或 Symfony,上手常见的服务器端脚本和传统 web 开发的学习曲线通常也比较新的栈更短。
这对小团队和代理商尤为重要:人员流动频繁、截止日期真实、最昂贵的 bug 是没人能理解的那个。
PHP 的文档是竞争优势:全面、实用且充满示例。除了官方文档,还有大量教程、书籍、课程和社区答疑。初学者能快速入门,资深开发者能在性能、测试和架构模式上深入研究而不中途碰壁。
语言不会因为不完美而死——当它维护成本过高时才会被淘汰。PHP 的长期历史意味着:
这种长期维护的故事并不光鲜,但它正是 PHP 作为长期运行系统的安全选择。
PHP 的名声常与“老派”网站挂钩,但它的日常现实很现代:运行在相同环境、访问相同数据存储,并支持与其它后端语言相同的以 API 为先的模式。
PHP 在共享主机上仍然很出色——上传代码、指向域名,你就上线了。这种可访问性是它依然常见于小企业和内容站点的重要原因。
需要更多控制权的团队可以在 VPS 或 容器(Docker + Kubernetes)上运行 PHP。许多生产环境今天都是在 Nginx 后面跑 PHP-FPM,或使用隐藏基础设施细节的托管平台,同时保持标准的 PHP 工作流。
PHP 也出现在类无服务器的部署场景中。你可能不会总是运行“传统”的请求处理,但思想类似:短生命周期的进程按需扩展,通常以容器形式打包。
大多数 PHP 应用连接 MySQL/MariaDB——尤其是在 WordPress 丰富的环境中——但新建项目中 PostgreSQL 也很常见。
为提升速度,PHP 团队常用 Redis 作为缓存,有时也作为队列后端。实际效果是更少的数据库命中、更快的页面加载和更平稳的流量峰值应对——而不必改变核心产品。
PHP 并不限于渲染 HTML。它经常用于构建REST API,为移动应用、单页应用或第三方集成提供服务。
认证通常遵循通用概念:浏览器应用用 session + cookie,API 多用基于令牌的认证(例如 bearer token 或签名令牌)。具体细节随框架和需求而异,但架构模式很主流。
现代产品经常把 PHP 后端与 JavaScript 前端混合使用。
一种做法是 PHP 提供 API,由 React 或 Vue 等框架处理界面;另一种是“混合”模型,PHP 渲染核心页面以保证速度和 SEO,而 JavaScript 增强特定 UI 部分。这让团队在不把一切都塞入单一应用风格的情况下,选择性地实现动态功能。
“PHP 已死”的论调部分源于团队高估了变更成本。实际上,现代工具可以帮助你原型化或替换系统的部分,而无需把业务压在一次性重写上。例如 Koder.ai(一个聊天驱动的 vibe-coding 平台)在你想快速搭建管理面板、小型内部工具或与现有 PHP API 集成的 React 前端时很有用——能快速产出并导出源码,部署路径清晰。
PHP 经常被批评,有些并非纯属陈词滥调。如果你只接触过十年前的代码库,很多抱怨是有根有据的。关键是把语言本身与它当时常被使用的方式区分开来。
这是公平的,尤其是如果你用最早期的标准库函数来评判。命名、参数顺序和返回值并不总是设计得连贯。
情况的变化是:现代 PHP 开发大量依赖设计良好的库和框架,接口更一致。日常工作更多地使用 Composer 包、带类型的代码和可预测的 API,而不是直接依赖内建杂乱的函数集合。
这也公平——因为 PHP 上手容易,很多人发布了快速修复,将 HTML 与业务逻辑混在一起,省略测试。许多长期运行的应用携带着这样的历史。
但“遗留的 PHP”并不等同于“PHP 本身”。任意语言中都可能存在混乱的代码库;PHP 只是恰好有大量仍在产生营收的旧应用。
这通常已经过时。很多慢站点慢是因为数据库查询、插件或低效的应用逻辑,而不是运行时本身。
把启用了 OPcache 的现代 PHP 与 2000 年代早期的设置相比,根本不是同一回事。
实际可行的修复在于流程而非英雄式改写:采用编码标准、要求代码审查、在风险最高的地方添加测试、逐步现代化(升级 PHP 版本、引入 Composer、模块化重构而非全面重写)。
当你想快速交付一个可靠的 web 产品,且需要可预测的主机与招聘选择时,PHP 是有力的选择。尤其适合“构建页面、存储数据、管理用户、集成支付/CRM,并保持后台体验简单”的项目。
对许多团队而言,PHP 在以下场景表现优越:
如果你需要 WordPress,PHP 是默认选择:定制主题、插件和集成都属于同一生态。
如果你想要一个结构化应用而不采用 WordPress,Laravel 和 Symfony 提供成熟的约定、通过 Composer 的依赖管理和活跃社区——当你预期代码库会随时间增长时非常有用。
PHP 在以下场景可能不是最佳选择:
问自己:
如果大多数答案是“是”,PHP 往往是务实的选择。
PHP 的未来更像是稳步而有用的进步:更好的性能默认、清晰的类型、更强的工具链,以及主流框架与主机的持续支持。
最重要的“未来保障”措施就是保持 PHP 与依赖更新。每个大版本都会清理过时模式并提升速度,但团队只有把升级作为常规工作而非紧急任务才能受益。
实际策略是小步升级(例如 7.4 → 8.0 → 8.1/8.2/8.3),用 CI 管道尽早捕捉问题。现代框架(Laravel、Symfony)和 Composer 会让这变得可控,但前提是你也要保持它们同步更新。
关注:
把现代化当成一系列小且可逆的改动:
PHP 恒久存在的原因是它易于部署、支持完善,并且在真实的网页交付中持续改进。明智地使用它:保持更新、依赖成熟框架与工具,并以可测量、分步的方式进行现代化,以保障业务持续运行。
不。这个说法通常指 PHP 不再“时髦”,而不是没人在用。PHP 仍然驱动着大量生产环境流量——尤其是通过 WordPress——并且仍被主机商和平台广泛支持。
主要是历史和感知问题:
“现代 PHP”通常指 PHP 8+ 加上当下的生态实践:
很多性能刻板印象已经过时。真实的速度来自整个栈,而不是单一运行时;但当你:
PHP 可以非常快。
OPcache 会把预编译的 PHP 字节码保存在内存中,这样 PHP 就不必在每次请求时重复解析和编译同样的文件。对很多应用来说,这是最大的“免费”提升:
有时会,但对典型网页请求而言并不常见。PHP 8 的 JIT 在 CPU 密集型任务(例如图像处理、数值计算、长时间运行的 worker)中更有效。许多 web 请求的瓶颈在于数据库或网络 I/O,因此 JIT 对用户可感知速度的影响通常有限。
Composer 是 PHP 的依赖管理工具。它让你声明包、锁定版本并可重复构建——取代了把库文件拷进项目的旧做法。实际上,它促成了现代工作流:自动加载、更小、更易复用的库、以及更安全的升级路径。
PSR 标准在生态内统一了接口(自动加载、日志、HTTP 消息、容器等)。这让库之间能互操作,降低了耦合度:
当你需要快速上线并长期维护一个 web 产品,同时对主机和招聘有可预测的期望时,PHP 是一个稳健的选择:
如果想要结构化的应用而不采用 CMS,Laravel/Symfony 是成熟的选项。
把现代化当成一系列小、可逆的改动,而不是一次性重写:
这样可以在降低风险的同时稳步提升可维护性和安全性。