PHP(全称:PHP:Hypertext Preprocessor,即“PHP:超文本预处理器”)是一种开源的通用计算机脚本语言,尤其适用于网络开发并可嵌入HTML中使用。PHP的语法借鉴吸收C语言、Java和Perl等流行计算机语言的特点,易于一般程序员学习。PHP的主要目标是允许网络开发人员快速编写动态页面,但PHP也被用于其他很多领域。

PHP最初是由勒多夫在1995年开始开发的;现在PHP的标准由the PHP Group维护。PHP以PHP License作为许可协议,不过因为这个协议限制了PHP名称的使用,所以和开放源代码许可协议GPL不兼容。

PHP的应用范围相当广泛,尤其是在网页程序的开发上。一般来说PHP大多运行在网页服务器上,通过运行PHP代码来产生用户浏览的网页。PHP可以在多数的服务器和操作系统上运行,而且使用PHP完全是免费的。根据2013年4月的统计数据,PHP已经被安装在超过2亿4400万个网站和210万台服务器上。



PHP的特性包括:

  1. PHP 独特的语法混合了 C、Java、Perl 以及 PHP 自创新的语法。
  2. PHP可以比CGI或者Perl更快速的执行动态网页——动态页面方面,与其他的编程语言相比, PHP是将程序嵌入到HTML文档中去执行,执行效率比完全生成htmL标记的CGI要高许多; PHP具有非常强大的功能,所有的CGI的功能PHP都能实现。
  3. PHP支持几乎所有流行的数据库以及操作系统。
  4. 最重要的是PHP可以用C、C++进行程序的扩展!

  • 开放源代码

    所有的PHP源代码事实上都可以得到。

  • 免费性

    和其它技术相比,PHP本身免费且是开源代码。

  • 快捷性

    程序开发快,运行快,技术本身学习快。嵌入于HTML:因为PHP可以被嵌入于HTML语言,它相对于其他语言。编辑简单,实用性强,更适合初学者。

  • 跨平台性强

    由于PHP是运行在服务器端的脚本,可以运行在UNIX、LINUX、WINDOWS、Mac OS、Android等平台

  • 效率高

    PHP消耗相当少的系统资源。

  • 图像处理

    用PHP动态创建图像,PHP图像处理默认使用GD2。且也可以配置为使用image magick进行图像处理。

  • 面向对象

    在php4,php5 中,面向对象方面都有了很大的改进,php完全可以用来开发大型商业程序。

  • 专业专注

    PHP支持脚本语言为主,同为类C语言。


PHP原本的简称为Personal Home Page,是拉斯姆斯·勒多夫为了要维护个人网页,而用c语言开发的一些CGI工具程序集,来替换原先使用的Perl程序。最初这些工具程序用来显示拉斯姆斯·勒多夫的个人履历,以及统计网页流量。他将这些程序和一些窗体解释器集成起来,称为PHP/FI。PHP/FI可以和数据库连接,产生简单的动态网页程序。拉斯姆斯·勒多夫在1995年6月8日将PHP/FI公开发布,希望可以通过社区来加速程序开发与查找错误。这个发布的版本命名为PHP 2,已经有今日PHP的一些雏型,像是类似Perl的变量命名方式、窗体处理功能、以及嵌入到HTML中运行的能力。程序语法上也类似Perl,有较多的限制,不过更简单、更有弹性。

在1997年,任职于Technion IIT公司的两个以色列程序员:Zeev Suraski和Andi Gutmans,重写了PHP的语法分析器,成为PHP 3的基础,而PHP也在这个时候改称为PHP: Hypertext Preprocessor.。经过几个月测试,开发团队在1997年11月发布了PHP/FI 2,随后就开始PHP 3的开放测试,最后在1998年6月正式发布PHP 3。Zeev Suraski和Andi Gutmans在PHP 3发布后开始改写PHP的核心,这个在1999年发布的语法分析器称为Zend Engine,他们也在以色列的Ramat Gan成立了Zend Technologies来管理PHP的开发。

在2000年5月22日,以Zend Engine 1.0为基础的PHP 4正式发布,2004年7月13日则发布了PHP 5,PHP 5则使用了第二代的Zend Engine。PHP包含了许多新特色,像是强化的面向对象功能、引入PDO(PHP Data Objects,一个访问数据库的延伸库)、以及许多性能上的增强。目前PHP 4已经不会继续更新,以鼓励用户转移到PHP 5。

2008年PHP 5成为了PHP唯一维护中的稳定版本。最新的发布版本为PHP 5.6.9。

PHP 7的于2015年12月3日开发完成,主要的改进有PHPNG、JIT引擎、抽象语法树编译、异步编程。

主要版本 次要版本 发布日期 结束支持日期 说明
1.0 1.0.0 1995年6月8日 正式名称为"Personal Home Page Tools (PHP Tools)",第一次使用了"PHP"的名字。
2.0 2.0.0 1996年4月16日 针对PHP 1.0的改进版,速度更快、体积更小,更容易产生动态网页。
3.0 3.0.0 1998年6月6日 2000年10月20日 开发方式改成多人共同参与。Zeev Suraski和Andi Gutmans为了这个版本重写了剖析引擎。
4.x 4.0.0 2000年5月22日 2001年6月23日 改成以Zend引擎作为语法分析器,具有两阶段剖析/标签剖析系统等先进功能。
4.1.0 2001年12月10日 2002年3月2日 加入"超全域变量"(superglobals)功能,包含了$_GET$_POST$_SESSION等。
4.2.0 2002年4月22日 2002年9月6日 默认取消register_globals功能。从网络接收的数据将不会设置成全域变量,增加程序安全性。
4.3.0 2002年12月27日 2005年3月31日 加入命令行可执行文件,称为CLI,用以补充CGI
4.4.0 2005年7月11日 Added man pages for phpize and php-config scripts.
4.4.8 2008年1月3日 一些安全性的增强。曾可能为PHP 4的最后版本。若有必要,提供安全性更新到2008-08-08。
4.4.9 2008年8月7日 更多安全性增强和问题修补。PHP 4.4系列的最后版本。
5.x 5.0.0 2004年7月13日 2005年9月5日 推出有着新的对象模型的Zend Engine II。
5.1.0 2005年11月24日 2006年8月24日 在往重新设计的PHP引擎引入编译变量时做了性能提升。添加了PHP数据对象(PDO)作为访问数据库的统一接口。
5.2.0 2006年11月2日 2011年1月6日 默认打开"过滤"的扩展。本地的JSON支持。
5.2.8 2008年12月8日 紧急bug修复。
5.2.9 2009年2月26日 解决了5.2.*的超过了50多个错误和多个安全问题,增加了稳定性。
5.2.10 2009年6月18日 这个版本修正了大量的bug和安全漏洞,并升级了时区数据库。
5.2.17 2011年1月6日 修正了一个浮点数转化的Bug。
5.3.0 2009年6月30日 2014年8月14日 支持命名空间;使用XMLReader和XMLWriter增强XML支持;支持SOAP ,延迟静态绑定,跳转标签(有限的goto), 闭包,Native PHP archives。
5.3.3 2010年7月22日 使用命名空间的类中,与类同名的成员函数不再作为构造函数。
5.3.6 2011年3月17日 修正一系列Bug。
5.3.10 2012年2月2日 修正了Stefan Esser报告的任意远程代码执行漏洞,CVE-2012-0830。
5.4.0 2012年3月1日 2015年9月3日 支持Trait、简短数组表达式。移除了register_globals, safe_mode, allow_call_time_pass_reference, session_register(), session_unregister(), magic_quotes以及session_is_registered()。加入了内建的Web服务器。增强了性能,减小内存使用量。
5.5.0 2013年6月20日 2016年7月10日 支持generators,用于异常处理的finally ,将OpCache(基于 Zend Optimizer+)加入官方发布中。
5.6.0 2014年8月28日 2018年12月31日 支持常量标量表达式、可变参数函数、指数运算符,增加phpdbg SAPI、统一的默认字符集。
6.x 未发布 不适用 取消掉的、从未正式发布的PHP版本。
7.x 7.0.0 2015年12月3日 2018年12月3日 Zend Engine 3 (性能提升并在Windows上支持 64-bit 整数),统一的变量语法, 

基于抽象语法树编译过程。

7.0.1 2015年12月17日
7.0.2 2016年1月7日
7.0.3 2016年2月4日
7.0.4 2016年3月3日
7.0.5 2016年3月31日
7.0.6 2016年4月28日
7.1.0 2016年11月 发行后三年