我们今天所知的 PHP 实际上是名为 PHP/FI 的产品的继任者。PHP 的第一个版本由 Rasmus Lerdorf 于 1994 年创建,它是一组用 C 语言编写的简单通用网关接口 (CGI) 二进制文件。最初用于跟踪访问他在线简历的次数,他将这套脚本命名为“个人主页工具”,更常被称为“PHP 工具”。随着时间的推移,人们希望获得更多功能,Rasmus 重写了 PHP 工具,产生了更大和更丰富的实现。这个新模型能够进行数据库交互等操作,提供了一个框架,用户可以利用它开发简单的动态 Web 应用程序,例如留言簿。1995 年 6 月,Rasmus » 发布了 PHP 工具的源代码,允许开发者根据自己的需要使用它。这也允许 - 并鼓励 - 用户为代码中的错误提供修复,并对其进行改进。
同年 9 月,Rasmus 扩展了 PHP,并短暂地放弃了 PHP 这个名字。现在,这些工具被称为 FI(代表“Forms Interpreter”,表单解释器),新的实现包含了我们今天所知的 PHP 的一些基本功能。它具有类似 Perl 的变量、自动解释表单变量以及嵌入式 HTML 语法。语法本身类似于 Perl,但更加有限、简单,而且有些前后不一致。实际上,为了将代码嵌入到 HTML 文件中,开发者必须使用 HTML 注释。尽管这种方法并不完全受欢迎,但 FI 作为 CGI 工具继续得到发展和认可——但还不是作为一门语言。然而,这种情况在接下来的一个月里开始发生变化;1995 年 10 月,Rasmus 发布了代码的完整重写版本。它恢复了 PHP 这个名字,现在(短暂地)被称为“个人主页构建工具”,这是第一个版本拥有当时被认为是先进的脚本接口。这门语言的设计刻意模仿 C 的结构,使其成为熟悉 C、Perl 和类似语言的开发者的容易上手的选择。由于到目前为止它仅限于 UNIX 和符合 POSIX 的系统,Windows NT 实现的可能性正在探索中。
代码进行了又一次完整的改造,1996 年 4 月,Rasmus 将过去版本的名称组合在一起,推出了 PHP/FI。这个第二代实现真正开始将 PHP 从一套工具发展成为一门编程语言。它包含了对 DBM、mSQL 和 Postgres95 数据库、Cookie、用户定义函数支持以及更多功能的内置支持。同年 6 月,PHP/FI 升级到 2.0 版本。然而,关于这一点的一个有趣事实是,PHP 2.0 只有一个完整的版本。当它最终在 1997 年 11 月从测试版毕业时,底层的解析引擎已经被完全重写了。
尽管它在开发中寿命短暂,但在仍然年轻的 Web 开发世界中,它仍然很受欢迎。在 1997 年和 1998 年,PHP/FI 在全球拥有数千名用户。截至 1998 年 5 月的 Netcraft 调查表明,将近 60,000 个域名报告了包含“PHP”的头部信息,表明主机服务器确实安装了它。这个数字相当于当时互联网上所有域名的 1%。尽管这些数字令人印象深刻,但 PHP/FI 的成熟注定要受到限制;虽然有一些次要贡献者,但它仍然主要由个人开发。
示例 #1 示例 PHP/FI 代码
<!--include /text/header.html--> <!--getenv HTTP_USER_AGENT--> <!--ifsubstr $exec_result Mozilla--> Hey, you are using Netscape!<p> <!--endif--> <!--sql database select * from table where user='$username'--> <!--ifless $numentries 1--> Sorry, that record does not exist<p> <!--endif exit--> Welcome <!--$user-->!<p> You have <!--$index:0--> credits left in your account.<p> <!--include /text/footer.html-->
PHP 3.0 是第一个与当今的 PHP 相似的版本。Andi Gutmans 和 Zeev Suraski 是来自以色列特拉维夫的两人,他们发现 PHP/FI 2.0 仍然效率低下,缺乏为大学项目开发的电子商务应用程序所需的功能,因此在 1997 年开始对底层解析器进行又一次完整的重写。他们在线联系了 Rasmus,讨论了当前实现的各个方面以及他们对 PHP 的重新开发。为了改进引擎并开始建立在 PHP/FI 现有用户群的基础上,Andi、Rasmus 和 Zeev 决定合作开发一种新的、独立的编程语言。这种全新的语言在新的名称下发布,消除了 PHP/FI 2.0 名称中对有限个人使用的暗示。它被简单地重新命名为“PHP”,其含义成为递归缩写——PHP:超文本预处理器。
PHP 3.0 最大的优势之一是其强大的可扩展性功能。除了为最终用户提供对多个数据库、协议和 API 的成熟接口之外,语言本身的易扩展性吸引了数十名开发者提交了各种模块。可以说,这是 PHP 3.0 取得巨大成功的关键。PHP 3.0 中引入的其他关键功能包括面向对象编程支持和更强大、更一致的语言语法。
1998 年 6 月,来自世界各地的许多新开发者加入了开发团队,新的 PHP 开发团队宣布 PHP 3.0 成为 PHP/FI 2.0 的官方继任者。PHP/FI 2.0 的活跃开发自前一年 11 月起基本停止,现在正式结束。经过大约九个月的公开测试,当宣布正式发布 PHP 3.0 时,它已经在全球超过 70,000 个域名上安装,并且不再局限于符合 POSIX 的操作系统。报告 PHP 已安装的域名中,只有很少一部分托管在运行 Windows 95、98 和 NT 以及 Macintosh 的服务器上。在鼎盛时期,PHP 3.0 安装在互联网上大约 10% 的 Web 服务器上。
1998 年冬季,在 PHP 3.0 正式发布后不久,Andi Gutmans 和 Zeev Suraski 开始着手重写 PHP 的核心。设计目标是提高复杂应用程序的性能,并改进 PHP 代码库的模块化。PHP 3.0 的新功能和对各种第三方数据库和 API 的支持使得此类应用程序成为可能,但 PHP 3.0 并非旨在有效地处理此类复杂应用程序。
这个新引擎被称为“Zend Engine”(由他们的名字 Zeev 和 Andi 组成),成功地满足了这些设计目标,并于 1999 年年中首次推出。基于这个引擎的 PHP 4.0,再加上各种额外的新功能,于 2000 年 5 月正式发布,距离其前身发布近两年。除了性能大幅提升之外,PHP 4.0 还包含其他关键功能,例如对更多 Web 服务器、HTTP 会话、输出缓冲、更安全的用户输入处理方式以及几种新的语言结构的支持。
PHP 5 于 2004 年 7 月发布,经过了长时间的开发和多次预发布版本。它主要由其核心驱动,即 Zend Engine 2.0
,它具有新的对象模型和数十个其他新功能。
PHP 的开发团队包括数十名开发者,以及数十名其他开发者参与了 PHP 相关和支持项目,例如 PEAR、PECL 和文档,以及分布在全球六大洲七大洲的超过一百台独立 Web 服务器的底层网络基础设施。虽然这只是一个基于往年统计数据的估计,但可以肯定地说,PHP 现在安装在全球数千万甚至数十亿的域名上。
PHP 6 的计划是在引擎和语言中提供对 Unicode 的深入支持。这项工作后来被放弃,但原本针对 PHP 6 的其他功能被整合到 PHP 5.3 (命名空间) 和 PHP 5.4 (特质、“短”数组语法) 中。