[源码精读系列]PHP1的前世今生

1.前言

最近已经开始写编程思想系列,主要还是学习应用层的编码设计思想。不过,想要深入了解原理,通读源码是必经之路。前不久,我在某个PHP社区上参与了站长发起的一个系列的问答,其中有一个简单的讨论了一下什么是PHP的问题?我和他说,PHP初期是用C语言写的CGI脚本,通过早期的web服务器的CGI模式运行,用来做Web的统计工作。他听了之后,就和我说,PHP不是C语言写的,是类C语言,然后说了一大堆东西。当时,我还是忍住了,没和他说关于C语言宏的高级技巧的使用。不过回头来看,自己还是有必要去读读PHP的每个版本的源码,来消除一点自己的无知。

2.PHP1产生的技术背景

来自丹麦的Rasmus Lerdorf,早期用perl语言统计他的网站数据,后来用C语言重写了这个统计程序,也就是PHP的雏形。1995年,PHP1发布,它是运行在当时主流的Web服务器NCSA HTTPD(也就是Apache的前身)上的CGI程序。学过C/C++的人应该知道,刚开始接触的时候,大部分都是在控制台下进行输入输出的逻辑处理。其实,CGI和控制台的区别就是,CGI是Web服务器对外部脚本定义的接口规范,它把用户在浏览器上的输入传输给外部的cgi程序,所以你把控制台想象成浏览器就很容易理解这一点了,而输出并不是ASCII字符,而是HTML。

3.代码结构

早期的版本实现了web统计、表单处理、文件预览、环境变量版本信息打印等简单功能,下面是代码结构:

其中phpl.c是静态页面嵌入统计程序的主要入口,而phpf.c则是对表单、文件以及环境变量的处理。

4.效果体验

4.1 Html的访问统计

phpl.cgi

4.2月度统计

phplmon.cgi

4.3统计详情

4.4环境与版本信息

env

4.5表单处理

phpf.cgi

4.6文件显示

5.相关资源

PHP历史版本下载地址

https://museum.php.net/

Apache-CGI程序的配置

https://www.docs4dev.com/docs/zh/apache/2.4/reference/howto-cgi.html#cgi%E5%8A%A8%E6%80%81%E5%86%85%E5%AE%B9
如无特殊说明,文章均为本站原创,转载请注明出处。如发现有什么不对的地方,希望得到您的指点。

发表评论

电子邮件地址不会被公开。 必填项已用*标注