php-5.x.x-Win32.zip的组织 php 5.2.6 win32.zip

http://bbs.phpeye.com/thread-34-1-1.html

不知分析过php文件组织的人多不多,我个人有最小化倾向,总喜欢把一个东西拆开来然后重新一块块拼起来,这回拿php压缩包开涮:)

最小化情况下的php其实只需要两个文件就能运行了: php5ts.dll和一个sapi(Server API,说白了就是接口),如php.exe或

php5apache2_2.dll,等等。php语言的完整功能都集中在一个动态链接库 php5ts.dll 里,其它都是外设 :) 这个名字也不是乱取的,

ts实际上是线程安全的缩写。所以,如果需要一个命令行脚本解释器,那么 phpt5s.dll + php.exe 就足够,如果需要以apache模块的

方式运行php解释器,那么 php5ts.dll + php5apache2_2.dll 就足够(根据apache版本加载相应的sapi)。

这种情况下,其实还隐含了一个文件,想必你也猜出来了,就是 php.ini 文件。当没有给php提供配置文件时,它会默认使用一个配置文件,

这个文件就是php.ini-dist。所以,在前两个文件的基础上,再加上一个php.ini文件,就可以完全定制php的行为了。

在哪寻找这个 php.ini 是由sapi决定的,比如命令行下可以用 php -c 来控制加载哪个 php.ini,apache模块里可以用httpd.conf的PHPIniDir

来决定在哪寻找 php.ini,等等。

那么,sapi运行时在哪找php5ts.dll? 首先是在sapi的当前目录,如果找不到,就到PATH目录去找。这个跟后面会讲到的“扩展加载外部库”

实际上原理是一样的,不过有一点区别:php_xxx.dll加载外部库时,外部库跟php_xxx.dll在同一个目录下并没有用,而必须在PATH或调用

php_xxx.dll的sapi目录下才行,以前很多人安装php时,把php5ts.dll和libmysql.dll拷贝到apache的bin目录下就是这个原因。

现在有三个文件了: php5ts.dll, sapi, php.ini。该是添加php扩展的时候了,这些众多的扩展才是php的威力所在!怎么通向扩展?总得

有条路子对不对,呵呵。这条路子就是php.ini里的 extension_dir 配置项。把这个配置项设为 php 扩展的路径,就可以把这些php扩展

导到php里。设置了 extension_dir 选项后,就往这个目录下塞你需要的扩展,然后在 php.ini 里做个记号:extension=php_xxx.dll即可。

扩展并不是都是同一类的,有些扩展本身自己实现了功能函数,有些扩展则链接到外部函数库(zend扩展不在讨论之列)。比如

php_gd2.dll,php_socket.dll,php_memcached.dll,都是自己实现了功能函数;而php_mysql.dll,则是链接到外部函数库的,这个外部

库就是我们熟悉的libmysql.dll。还有其它扩展如oci,也需要外部函数库。

php-5.x.x-Win32.zip的组织 php 5.2.6 win32.zip
那么,需要外部函数库的扩展,到哪去找这些函数库?一个地方是调用sapi的目录,另一个地方是PATH环境变量定义的目录。前面说过,

跟扩展在同一个目录下是没有用的,除非这个目录也在PATH里。php包的根目录下一大堆的libxxx.dll,fdftk.dll,ssleay32.dll,yaz.dll等等

都是外部函数库。

除了上面讲的这些最核心的文件外,还有其它几个文件和目录,这些目录基本上是给开发和扩展php用的,应用层的php程序基本用不到

这些文件和目录。不过这里有一个例外,就是go-pear.bat文件和PEAR目录,这些是安装PEAR用的,PEAR是一套可复用的类库,可以在

多个项目中复用这些代码。关于PEAR的详细介绍我就不讲了,已经有很多文章介绍这个了,呵呵。

大致就先写这些,有什么想法大家多讨论讨论:)

  

爱华网本文地址 » http://www.aihuau.com/a/25101012/121625.html

更多阅读

电影《璀璨的婚礼》5月6日成都开机导演:原野演员导演:北京韩韩

韩笔:(见组前请电话联系确定地址和开机日期)电影《璀璨的婚礼》5月6日成都开机编剧:柴盛怀(台湾)、廖士元(台湾)导演:原野 演员导演:北京韩韩【电影《璀璨的婚礼》5月6成都开机编剧:柴盛怀(台湾)、廖士元(台湾)导演:原野演员导演:北京韩韩】

声明:《php-5.x.x-Win32.zip的组织 php 5.2.6 win32.zip》为网友恏吢亽分享!如侵犯到您的合法权益请联系我们删除