07-01-2004
版权 © 1997, 1998, 1999, 2000, 2001, 2002, 2003 PHP 文档小组
版权信息
© Copyright 1997 - 2003 本手册版权归 PHP Documentation Group 所有。发布本资料须遵守开放出版物许可协议 1.0 或者更新的版本中所宣布的条款(在 http://www.opencontent.org/openpub/ 可获得最新的版本)。
未经版权所有者明确授权,禁止发布本文档及其独立存在地修改版本。
未经版权所有者正式授权,禁止将本文档及其派生物以标准(纸质)书籍的形式出版。
本手册首页列有 PHP 文档小组成员名单。如果您需要联系改小组成员,请发电子邮件到 phpdoc@lists.php.net。
本手册“Extending PHP 4.0”有关章节的版权归 © 2000 Zend Technologies, Ltd 所有。发布本资料须遵守开放出版物许可协议 1.0 或者更新的版本中所宣布的条款(在 http://www.opencontent.org/openpub/ 可获得最新的版本)。
本手册基本上由函数参考组成,此外包括语言参考、PHP 主要特点以及其它补充信息。
您可以在 http://www.php.net/download-docs.php 下载这个手册的几种格式的版本。关于手册开发的更多信息,请参阅附录:“关于本手册”。
PHP(“PHP: Hypertext Preprocessor”,超文本预处理器的字母缩写)是一种被广泛应用的开放源代码的多用途脚本语言,它可嵌入到 HTML中,尤其适合 WEB 开发。
以上是一个简单的回答,不过这是什么意思呢?请看如下例子:
请注意这个范例和其它用 C 或 Perl 语言写的脚本之间的区别——与用大量的命令来编写程序以输出 HTML 不同的是,我们用 PHP 编写了一个 HTML 脚本,其中嵌入了一些代码来做一些事情(例如,在本例中我们输出了一些文本)。PHP 代码被特殊的起始符和结束符包含,使得您可以进出“PHP 模式”。
和客户端的 JavaScript 不同的是,PHP 代码是运行在服务端的。如果您在您的服务器上建立了如上例类似的代码,则在运行该脚本后,客户端就能接收到其结果,但他们无法得知其背后的代码是如何运作的。您甚至可以将 WEB 服务器设置成让 PHP 来处理所有的 HTML 文件,这么一来,用户就无法得知服务端到底做了什么。
使用 PHP 的一大好处是它对于初学者来说及其的简单,同时也给专业的程序员提供了各种高级的特性。当您看到 PHP 长长的特性列表时,请不要害怕。您可以很快的入门,只需几个小时您就可以自己写一些简单的脚本。
尽管 PHP 的开发是以服务端脚本为目的地,但事实上其功能远不局限与此。请继续读后面的章节,在“PHP 能做什么?”一节中您将获得更多的信息。
PHP 能做任何事。PHP 主要是用于服务端的脚本程序,因此您可以用 PHP 来完成任何其它的 CGI 程序能够完成的工作,例如收集表单数据,生成动态网页,或者发送/接收 Cookies。但 PHP 的功能远不局限于此。
PHP 脚本主要用于以下三个领域。
服务端脚本。这是 PHP 最传统,也是最主要的目标领域。开展这项工作您需要具备以下三点:PHP 解析器(CGI 或者服务器模块)、WEB 服务器和 WEB 浏览器。您需要在运行 WEB 服务器时,安装并配置 PHP,然后,可以用 WEB 浏览器来访问 PHP 程序的输出,即浏览服务端的 PHP 页面。请查阅“安装”一章以获取更多信息。
命令行脚本。您可以编写一段 PHP 脚本,并且不需要任何服务器或者浏览器来运行它。通过这种方式,您仅仅只需要 PHP 解析器来执行。这种用法对于依赖 cron(Unix 或者 Linux 环境)或者 Task Scheduler(Windows 环境)的日常运行的脚本来说是理想的选择。这些脚本也可以用来处理简单的文本。请参阅“PHP 的命令行模式”以获取更多信息。
编写客户端的 GUI 应用程序。对于基于窗口式的应用程序来说,PHP 或许不是一种最好的语言,但是如果您非常精通 PHP,并且希望在您的客户端应用程序中使用 PHP 的一些高级特性,您可以利用 PHP-GTK 来编写这些程序。用这种方法,您还可以编写跨平台的应用程序。PHP-GTK 是 PHP 的一个扩展,在通常发布的 PHP 包中并不包含它。如果您对 PHP-GTK 感兴趣,请访问其网站以获取更多信息。
PHP 能够用在所有的主流操作系统上,包括 Linux、Unix 的各种变种(包括 HP-UX、Solaris 和 OpenBSD)、Microsoft Windows、Mac OS X、RISC OS 等。今天,PHP已经支持了大多数的 WEB 服务器,包括 Apache、Microsoft Internet Information Server(IIS)、Personal Web Server(PWS)、Netscape 以及 iPlant server、Oreilly Website Pro Server、Caudium、Xitami、OmniHTTPd 等。对于大多数的服务器,PHP 提供了一个模块;还有一些 PHP 支持 CGI 标准,使得 PHP 能够作为 CGI 处理器来工作。
综上所述,使用 PHP,您可以自由地选择操作系统和 WEB 服务器。同时,您还可以在开发时选择使用面对过程和面对对象,或者两者混和的方式来开发。尽管 PHP 目前的版本还没有支持 OOP 所有的标准,但很多代码仓库和大型的应用程序(包括 PEAR 库)仅使用 OOP 代码来开发。
使用 PHP,您并不局限于输出 HTML。PHP 还能被用来动态输出图像、PDF 文件甚至 Flash 动画(使用 libswf 和 Ming)。您还能够非常简便的输出文本,例如 XHTML 以及任何其它形式的 XML 文件。PHP 能够自动生成这些文件,在服务端开辟出一块动态内容的缓存,可以直接把它们打印出来,或者将它们存储到文件系统中。
PHP 最强大最显著的特性之一,是它支持很大范围的数据库。您会发现利用 PHP 编写数据库支持的网页简单得难以置信。目前,PHP 支持如下数据库:
我们同时还有一个 DBX 扩展库使得您可以自由的使用该扩展库支持的任何数据库。另外,PHP 还支持 ODBC,即 Open Database Connection Standard(开放数据库连接标准),因此您可以连接任何其它支持该世界标准的数据库。
Adabas D Ingres Oracle (OCI7 and OCI8) dBase InterBase Ovrimos Empress FrontBase PostgreSQL FilePro (read-only) mSQL Solid Hyperwave Direct MS-SQL Sybase IBM DB2 MySQL Velocis Informix ODBC Unix dbm
PHP 还支持利用诸如 LDAP、IMAP、SNMP、NNTP、POP3、HTTP、COM(Windows 环境)等不计其数的协议的服务。您还可以开放原始网络端口,使得任何其它的协议能够协同工作。PHP 支持和所有 WEB 开发语言之间的 WDDX 复杂数据交换。关于相互连接,PHP 已经支持了对 Java 对象的即时连接,并且可以将他们自由的用作 PHP 对象。您甚至可以用我们的 CORBA 扩展库来访问远程对象。
PHP 具有极其有效的文本处理特性,支持从 POSIX 扩展或者 Perl 正则表达式到 XML 文档解析。为了解析和访问 XML 文档,我们支持了 SAX 和 DOM 标准。您可以使用我们的 XSLT 扩展库来转换 XML 文档。
如果您将 PHP 用于电子商务领域,您会发现其 Cybercash payment、CyberMUT、VeriSign Payflow Pro 以及 CCVS 函数对于您的在线交易程序来所是非常有用的。
另外,我们还有很多其它有趣的扩展库。例如 mnoGoSearch 搜索引擎函数、IRC 网关函数、多种压缩工具(gzip、bz2)、日历转换、翻译……
由于在这里我们无法列出 PHP 所有的特性和可提供的便利,请您参阅“安装”以及“函数参考”等有关章节以获取关于这里提到的扩展库更多的信息。
本章我们将给出关于 PHP 的简明教程。虽然 PHP 的功能并不局限于生成动态的 WEB 页面,但本章的内容仅涉及于此。请查阅题为“PHP 能做什么?”一节以获取更多信息。
使用了 PHP 的 WEB 页面将被和通常的 HTML 页面一样处理,您可以用建立 HTML 页面的通常方法来建立和编辑它们。
在本教程中,我们假设您的服务器已经安装并运行了 PHP,所有以 .php 结尾的文件都将由 PHP 来处理。在大部分的服务器上,这是 PHP 的默认扩展名,不过,也请询问您的服务器管理员以确认。如果您的服务器支持 PHP,则您不需要做任何事情。您只用建立您的 .php 文件,并把他们放置到您的 WEB 目录中,服务器将神奇的自动为您解析这些文件。您不用编译任何东西,也不用安装任何其它的工具,您仅仅只需把这些使用了 PHP 的文件想象成简单的 HTML 文件,其中只不过多了一种新的标识符,在这里您可以做各种各样的事情。大多数的 WEB 主机都提供 PHP 的支持,如果您的主机不支持,您可以阅读“PHP 链接”一节中的资源来查找支持 PHP 的 WEB 主机。
我们假设您希望在本地机器开发以节约宝贵的带宽。在这种情况下,您需要安装一个诸如 Apache 的 WEB 服务器,当然还有 PHP。您可能还希望安装一个数据库,例如 MySQL。您可以单独安装它们,当然简单的方法是获取一个预先配置的安装包,用这个安装包,您只用点击几下鼠标,就可以自动的安装所有这些系统。在任何操作系统下建立有 PHP 支持的 WEB 服务器都十分简单,包括 Linux 和 Windiws。在 Linux 下,您会发现 rpmfind 和 PBone 能够在获取 RPM 时为您提供帮助。
在您的 WEB 服务器根目录(DOCUMENT_ROOT)下建立一个文件名为 hello.php,然后完成如下内容:
请注意这和 CGI 脚本不同,该文件不用制作成可执行脚本,它没有任何特殊的地方。您只需把它当作一个普通的 HTML 文档,只是里面多了一重新的标识符,使得您可以用它来做很多有趣的事情。
该程序非常的简单,它仅仅只是利用了 PHP 的 echo() 语句显示了 Hello World。您一定不会满足与此。
如果您试过了这个例子,但是没有得到任何地输出,或者您的浏览器弹出了下载框,或者浏览器以文本方式显示了源文件,可能的原因是您的服务器还没有支持 PHP。您需要请您服务器的管理员根据本手册“安装”一章的内容使得服务器支持 PHP。如果您在本地开发,请阅读手册有关安装的章节以确保所有的设置都正确。如果问题仍然存在,请通过 PHP 支持的各种方式获取帮助。
以上例子的目的是为了显示 PHP 特殊标识符的格式。在这个例子中,我们用 <?php 来表示 PHP 标识符的起始,然后我们放入 PHP 语句并通过加上一个终止标识符 ?> 来退出 PHP 模式。您可以根据您的需要在 HTML 文件中像这样开启或关闭 PHP 模式。请参阅手册中“PHP 基本语法”以获取更多信息。
关于文本编辑器: 有很多文本编辑器以及集成开发环境(IDEs)可以被用来建立、编辑和管理 PHP 文件。这些工具中的一部分被列在 PHP 编辑器列表中。如果您希望推荐其它的编辑器,请访问以上页面,并要求该页面的维护者将您推荐的编辑器加入到该列表中。使用支持语法高亮功能的浏览器会给您的开发带来很多帮助。
关于文字处理器: 诸如 StarOffice Writer、Microsoft Word 和 Abiword 的文字处理器不适合用来编辑 PHP 程序。如果您希望用以上这些工具的某一种来处理脚本,您必须保证将结果存成了纯文本(PLAIN TEXT)格式,否则 PHP 将无法读取并运行这些脚本。
关于 Windows 记事本: 如果您使用 Windows 记事本来编写 PHP 脚本,您需要注意在您保存文件时,文件的后缀名应该为 .php。(记事本将自动在文件名后面加上 .txt 后缀,除非您采取以下措施之一来避免这种情况。)当您保存文件时,系统会让你指定文件的文件名,这时请将您的文件名加上引号。(例如,“hello.php”。)或者,您也可以点击保存对话框中的“保存类型”下拉菜单,并将设置改为“所有文件”。这样您在输入文件名的时候就不用加引号了。
现在您已经成功建立了一个简单的 PHP 脚本。现在您可以建立一个最著名的 PHP 脚本。调用函数 phpinfo(),您将会看到很多有关您系统有用的信息,以及预定义变量、已经加载的 PHP 模块和设置信息。请花一些时间来查看这些重要的信息。
现在让我们来编写一些更实用的脚本。我们将检查浏览页面的访问者用了什么类型的浏览器。要达到这个目的,我们需要检查用户的 agent 字符串,它是浏览器发送的 HTTP 请求的一部分。该信息被存储在一个变量中。在 PHP 中,变量总是以一个美元符开头。我们现在感兴趣的变量是 $_SERVER["HTTP_USER_AGENT"]。
注: $_SERVER 是一个特殊的 PHP 保留变量,它包含了 WEB 服务器提供的所有信息,被称为自动全局变量(或“超级全局变量”)。请查阅本手册“自动全局变量”的有关内容,以获取更多信息。这些特殊的变量是在 PHP 4.1.0 版本引入的。在这之前,我们使用 $HTTP_*_VARS 数组,如 $HTTP_SERVER_VARS。尽管现在已经不用了,但它们在新版本中仍然存在。(参见旧代码中的注解。)
要显示该变量,我们只需简单地进行如下操作:
PHP 有很多种不同类型的变量。在以上例子中我们打印了一个数组的元素。数组是一类非常有用的变量。
$_SERVER 只是 PHP 自动全局化的变量之一。您可以查阅“保留变量”一节来查看这些变量的列表,或者也可以建立如下的文件来得到一个完整的列表:
如果您在您的浏览器中打开这个文件,您将看到关于 PHP 完整的信息,以及所有您可以使用的变量列表。
您可以在一个 PHP 标识中加入多个 PHP 语句,也可以建立一个代码块来做比简单的 echo 更多的事情。例如,如果我们需要检查 Internet Explorer,我们可以进行如下操作:
在这里我们要介绍一些新的原理。我们用了一个 if 语句。如果您对 C 语言的基本语法比较熟悉,则您应该对此很熟悉,否则,您可能需要拿起任何一本 PHP 介绍性的书籍并阅读前面的两三个章节,或者也可以阅读本手册的“语言参考”一章。您可以在 http://www.php.net/books.php 找到有关 PHP 的书籍的列表。
我们需要介绍的第二个原理,是对 strpos() 函数的调用。strpos() 是 PHP 的一个内建函数,其功能是在一个字符串中搜索另外一个字符串。例如我们现在需要在 $_SERVER["HTTP_USER_AGENT"](即所谓的 haystack) 变量中寻找 "MSIE"。如果在这个 haystack 中该字符串(即所谓的 needle)被找到,则函数返回 needle 在 haystack 中相对开头的位置;如果没有,则返回 FALSE。如果该函数没有返回 FALSE,则 if 会将条件判断为 TRUE 并运行其大括号 {} 内的代码;否则,则不运行这些代码。您可以自己尝试利用if、else以及其它的函数,例如 strtoupper() 和 strlen(),来建立类似的脚本。在本手册中,相关的页面也包含有范例。如果您对如何使用函数不是很确定,您可以阅读手册中有关“如何阅读函数定义”和“PHP 函数”的有关函数。
以下我们进一步显示如何进出 PHP 模式,甚至是在一个 PHP 代码块的中间:
例子 2-5. 混和 HTML 和 PHP 模式
该脚本的输出可能是:
|
和以上我们用一个 PHP 的 echo 语句来输出不同的是,我们跳出了 PHP 模式来直接写 HTML 代码。这里很值得注意的一点是,对于这两种情况而言,脚本的逻辑效率是相同的。在判断了 strpos() 函数的返回值是 TRUE 或是 FALSE,也就是判断了字符串 MSIE 是否被找到之后,最终只有一个 HTML 块被发送给浏览者。
PHP 一个很有用的特点体现在它处理 PHP 表单的方式。您需要理解的非常重要的原理,是表单的任何元素都在您的 PHP 脚本中自动生效。请参阅本手册“PHP 之外的变量”以获取关于在 PHP 中使用表单的详细信息及范例。以下是 HTML 表单的范例:
该表单中并没有什么特殊的地方,其中没有使用任何特殊的标识符。当用户填写了该表单并点击了提交按钮,页面 action.php 将被调用。在该文件中,您可以加入如下内容:
该脚本进行的工作应该已经很明显了,这儿并没有其它更复杂的内容。PHP 将自动为您设置 $_POST["name"] 和 $_POST["age"] 变量。在这之前我们使用了自动全局变量 $_SERVER,现在我们引入了自动全局变量 $_POST,它包含了所有的 POST 数据。请注意我们的表单提交数据的方法(method)。如果我们能使用了 GET 方法,那么表单中的信息将被储存到自动全局变量 $_GET 中。如果您并不关心请求数据的来源,您也可以用自动全局变量 $_REQUEST,它包含了所有 GET、POST、COOKIE 和 FILE 的数据。请参阅 import_request_variables() 函数。
现在,PHP 已经发展成为一种流行的脚本语言,您可以在很多公共的资源里找到您可以在您自己的脚本中重新利用的代码。PHP 语言的开发者为向下兼容性下了很多功夫,因此在新版本的 PHP 下,老版本的代码应该可以在不作任何改动的情况下(理想地)运行。不过实际上,我们还是必须对老的代码做一些改动。
有可能影响到老版本的代码的最重要的两点改动分别是:
取消了旧的 $HTTP_*_VARS 数组(在函数或者方法中他们原本是全局变量)。PHP 4.1.0 版本引入了如下自动全局数组变量: $_GET、$_POST、 $_COOKIE、$_SERVER、 $_FILE、$_ENV、$_REQUEST 以及 $_SESSION。 老的 $HTTP_*_VARS 数组,诸如 $HTTP_POST_VARS 等,从 PHP 3 就已经开始使用,它们仍然存在。 在 PHP 5.0.0 中,长的 PHP 预定义数组可以通过设置 register_long_arrays 来屏蔽。
外部变量不再默认得被注册为全局变量。也就是说,从 PHP 4.2.0 版本开始,$php.ini; 中的设置选项 register_globals 默认值变成了 off。我们建议您用以上提到的自动全局数组变量来访问这些值。但可能老的脚本、书籍以及教程都可能建立在该设置为 on 的基础上。如果该选项被设置为 on,则您便可以在 URL http://www.example.com/foo.php?id=42 中直接使用变量 $id。但不管被设置为 on 还是 off,$_GET['id'] 一直有效。
如果您希望了解关于这些改动的细节,请参阅“预定义变量”一节以及其中的超链接。
用您现在掌握的知识,您应该能够理解本手册中的大部分内容以及其中各式各样的脚本范例。在 php.net 网站的连接区 http://www.php.net/links.php 您能购获得其它更多的范例。
请查阅 PHP Conference 资料网站 http://conf.php.net/ 及 http://talks.php.net/ 以观看更多幻灯片,这些幻灯片展示了许多 PHP 其它的功能。
安装前,首先您需要了解您需要 PHP 做什么。您可以在三个领域使用 PHP,正如 PHP 能做什么? 一节中所描述的:
服务器端脚本运行
命令行脚本运行
客户端图形界面(GUI)程序
首先且最普遍的情况,您需要三样东西:PHP 自己,一个 Web 服务器和一个 Web 浏览器。您可能已经安装了 Web 浏览器,根据您安装操作系统的不同,您或许也已经安装好了 Web 服务器(例如,Linux 下的 Apache 或 Windows 下的 IIS)。或许您从某个公司租了些网站空间,如果是这样,您无须任何设置,便可以写 PHP 脚本,上传到您租的服务器空间中,并从浏览器中看到运行结果。
如果您需要自己设置服务器,您有两种将 PHP 连接到 Web 服务器的方法。对于大多数 Web 服务器 PHP 都有相应的模块接口(也叫做 SAPI)。这些服务器包括 Apache, 微软 Internet Information Server,Netscape 和 iPlanet 服务器。许多其它的服务器支持 ISAPI——微软模块接口(例如 OmniHTTPd 服务器)。如果 PHP 不支持作为您的 Web 服务器的模块,您总是能够将 PHP 作为 CGI 处理器使用的。这意味着您可以设置您的 Web 服务器使用命令行可执行文件 PHP(在 Windows 下是 php.exe)处理所有该服务器上的 PHP 文件请求。
如果您也对 PHP 命令行脚本感兴趣(例如,写一个脚本在离线的情况下自动生成一些图片,或者根据一些传递的命令行参数处理文本文件),您就需要命令行脚本运行功能。更多信息,请参考 撰写 PHP 命令行程序 一节。如果是这样的话,您不需要服务器和浏览器。
您也可以使用 PHP 的 PHP-GTK 扩展撰写客户端图形界面(GUI)程序。这与编写网页的方法有很大不同,因为您不输出任何 HTML,而是使用它们管理窗口和对象。更多关于 PHP-GTK 的信息,请 访问该扩展的网站。PHP-GTK 没有包含在官方 PHP 发布包中。
从这里开始往后,本节都将讲解如何在 Unix 和 Windows 下的 Web 服务器中使用模块和CGI方式安装 PHP。
下载 PHP,源代码和二进制发布包可以在 http://www.php.net/ 找到。我们建议您选择最靠近您地理位置的 镜像服务器 下载发布包。
本章节的内容和提示仅限于将 PHP 安装到 HP-UX 系统上。(此文章是由 paul_mckay at clearwater-it dot co dot 编写的)。
注: 本文涉及的技巧适用于 PHP 4.0.4 and Apache 1.3.9.
安装 PHP 你需要一个 gzip,你可以从如下地址得到该软件的二进制版本的发行包 http://hpux.connect.org.uk/ftp/hpux/Gnu/gzip-1.2.4a/gzip-1.2.4a-sd-10.20.depot.Z,下载后解压缩,并且使用 swinstall 安装。
安装 PHP 你需要 gcc,你可以从如下地址得到该软件的二进制版本的发行包 http://gatekeep.cs.utah.edu/ftp/hpux/Gnu/gcc-2.95.2/gcc-2.95.2-sd-10.20.depot.gz,解压缩这个文件,使用 swinstall 安装 gcc。
安装 PHP 你需要 GNU binutils,你可以从如下地址得到该软件的二进制版本的发行包 http://hpux.connect.org.uk/ftp/hpux/Gnu/binutils-2.9.1/binutils-2.9.1-sd-10.20.depot.gz,解压缩这个文件,使用 swinstall 安装 binutils。
安装 PHP 你需要 bison,你可以从如下地址得到该软件的二进制版本的发行包 http://hpux.connect.org.uk/ftp/hpux/Gnu/bison-1.28/bison-1.28-sd-10.20.depot.gz,安装方式同上。
安装 PHP 你需要 flex,你需要从 http://www.gnu.org 的镜像站点下载一个该软件的源代码。它被放置于一个 非 gnu 目录的 ftp 服务器上。下载这个文件,并且使用 gunzip 解压缩,然后执行 tar -xvf。进入新创建的 flex 目录并运行 ./configure,再执行 make 以及 make install。
如果这里出现了错误,很可能是由于 gcc 等工具不在路径中,应将其添加到环境变量 PATH 中。
下载 PHP 和 apache 的源代码。
下载后对他们分别执行 gunzip 和 tar -xvf。在开始编译他们之前我们需要修改一些文件。
首先 configure 文件需要被修改,因为它似乎忘记自己是在 hpux 系统下了,有更好的方法解决此问题,但最省事的是在配置脚本的第 47286 行加入 lt_target=hpux10.20。
其次是修改 Apache GuessOS 文件。在文件 apache_1.3.9/src/helpers 的第 89 行,将参数 echo "hp${HPUXMACH}-hpux${HPUXVER}"; exit 0 替换为 echo "hp${HPUXMACH}-hp-hpux${HPUXVER}"; exit 0。
你不能把 PHP 作为共享对象方式安装到 HP-UX 因此你必须把他编译成为一个静态方式,参照 Apache 站点的指导就可以完成。
这样就完成了 PHP 和 Apache 的 安装编译,然而你的 Apache 将仍然不能启动,你必须为 Apache 配置一个新的用户名,例如 www 或 apache。然后修改你的 apache 配置文件 conf/httpd.conf 的 252 和 253 行,由原来的
User nobody Group nogroup |
替换为类似如下的内容
User www Group sys |
这是因为在 hp-ux 系统下, apache 不能作为 nobody 用户运行。按照上面的方式配置 Apache 和 PHP 就应该可以正常工作了。
This section contains notes and hints specific to installing PHP on Mac OS X Server.
There are a few pre-packaged and pre-compiled versions of PHP for Mac OS X. This can help in setting up a standard configuration, but if you need to have a different set of features (such as a secure server, or a different database driver), you may need to build PHP and/or your web server yourself. If you are unfamiliar with building and compiling your own software, it's worth checking whether somebody has already built a packaged version of PHP with the features you need.
There are two slightly different versions of Mac OS X, client and server. The following is for OS X Server.
Get the latest distributions of Apache and PHP.
Untar them, and run the configure program on Apache like so.
./configure --exec-prefix=/usr \ --localstatedir=/var \ --mandir=/usr/share/man \ --libexecdir=/System/Library/Apache/Modules \ --iconsdir=/System/Library/Apache/Icons \ --includedir=/System/Library/Frameworks/Apache.framework/Versions/1.3/Headers \ --enable-shared=max \ --enable-module=most \ --target=apache |
If you want the compiler to do some optimization., you may also want to add this line:
setenv OPTIM=-O2 |
Next, go to the PHP 4 source directory and configure it.
./configure --prefix=/usr \
--sysconfdir=/etc \
--localstatedir=/var \
--mandir=/usr/share/man \
--with-xml \
--with-apache=/src/apache_1.3.12 |
Type make and make install. This will add a directory to your Apache source directory under src/modules/php4.
Now, reconfigure Apache to build in PHP 4.
./configure --exec-prefix=/usr \ --localstatedir=/var \ --mandir=/usr/share/man \ --libexecdir=/System/Library/Apache/Modules \ --iconsdir=/System/Library/Apache/Icons \ --includedir=/System/Library/Frameworks/Apache.framework/Versions/1.3/Headers \ --enable-shared=max \ --enable-module=most \ --target=apache \ --activate-module=src/modules/php4/libphp4.a |
Copy and rename the php.ini-dist file to your bin directory from your PHP 4 source directory: cp php.ini-dist /usr/local/bin/php.ini or (if your don't have a local directory) cp php.ini-dist /usr/bin/php.ini.
Those tips are graciously provided by Marc Liyanage.
The PHP module for the Apache web server included in Mac OS X. This version includes support for the MySQL and PostgreSQL databases.
NOTE: Be careful when you do this, you could screw up your Apache web server!
Do this to install:
Open a terminal window.
Type wget http://www.diax.ch/users/liyanage/software/macosx/libphp4.so.gz, wait for the download to finish.
Type gunzip libphp4.so.gz.
Type sudo apxs -i -a -n php4 libphp4.so
Now type sudo open -a TextEdit /etc/httpd/httpd.conf. TextEdit will open with the web server configuration file. Locate these two lines towards the end of the file: (Use the Find command)
#AddType application/x-httpd-php .php #AddType application/x-httpd-php-source .phps |
Finally, type sudo apachectl graceful to restart the web server.
PHP should now be up and running. You can test it by dropping a file into your Sites folder which is called test.php. Into that file, write this line: <?php phpinfo() ?>.
Now open up 127.0.0.1/~your_username/test.php in your web browser. You should see a status table with information about the PHP module.
本章节的内容和提示仅限于将 PHP 安装到 OpenBSD 3.4 系统上。
使用二进制包安装 PHP 到 OpenBSD 系统上是被推荐的同时也是最简单的方法。PHP 核心包已经从其他模块中分离出来了并且每个模块可以被独立的安装/卸载而不影响其他模块。所有这些安装 PHP 需要的文件你可以在 OpenBSD 光盘或者在 FTP 站点上找到。
你需要安装的 PHP 核心包的文件是 php4-core-4.3.3.tgz,它包含了基本的引擎(包括 gettext 和 iconv)。其次,你可能还需要安装一些模块包,如:php4-mysql-4.3.3.tgz 或 php4-imap-4.3.3.tgz。你需要使用命令 phpxs 去激活它,并且在通过修改 php.ini 文件来屏蔽他们。
例子 3-1. 在 OpenBSD 系统下的软件包的安装示例
|
阅读packages(7) 的用户手册,可以得到更多的在 OpenBSD 系统下有关二进制软件包(binary packages)的信息.
你同样可以使用 软件包目录(ports tree)来编译 PHP 的源代码。然而,这样的安装方式仅仅是建议对 OpenBSD 非常熟悉的高级用户去做。PHP4 的软件包被分别分为了两个子目录:core 和 extensions。其中 extensions 目录产生了所有 PHP 所支持的子模块。如果你不希望创建并且使用这些模块中的某些模块,请使用 FLAVOR no_* 参数。例如,如果你希望跳过编译 imap 模块,设置 FLAVOR 为 no_imap 即可。
默认安装的 Apache 运行于 chroot(2) jail,将限制 PHP 脚本只能访问 /var/www 下面的文件。你需要建立 /var/www/tmp 目录来存放 PHP session 文件,或使用其它的 session 后端。此外,数据库套接字需要被放入 jail 或者侦听 localhost 接口。如果使用网络函数,某些 /etc 下面的文件例如 /etc/resolv.conf 和 /etc/services 需要被移动到 /var/www/etc 中去。OpenBSD PEAR 包会自动安装到正确的 chroot 目录中,因此不需要作特殊改动。有关 OpenBSD Apache 的更多信息见 OpenBSD FAQ。
对应于 gd 扩展的 OpenBSD 3.4 包需要预先安装 XFree86。如果你不想用那些需要 X11 的字体特性,则安装 php4-gd-4.3.3-no_x11.tgz 包来替代之。
本节包含了在 Solaris 系统上安装 PHP 的说明和提示。
默认安装的 Solaris 系统经常缺少 C 语言编译器和其相关工具。部分工具必须使用该工具的 GNU 版本,原因请阅读 FAQ。 下面是需要的软件:
gcc (推荐,其它 C 语言编译器也可以工作)
make
flex
bison
m4
autoconf
automake
perl
gzip
tar
GNU sed
该节将指导你在 Unix 系统上一般配置和安装 PHP。 在安装之前,确定研究了任何与你平台或 web 服务器相关的章节。
预备知识和软件
基本 Unix 技术(如果编译,能够操作 "make" 和一个 C 编译器)
一个 ANSI C 编译器 (如果编译)
flex (用于编译)
bison (用于编译)
一个 web 服务器
任何模块特异组件(例如 gd、 pdf 库,等等)
有几种在 Unix 平台上安装 PHP 的方法,使用编译和配置的过程 ,或者通过大量的预打包的方式。本文主要关注编译和配置 PHP 的过程。
初始 PHP 安装和配置过程是使用 configure 脚本的命令行选项来控制的。本文概要了大部分通用选项,但是还有许多其它选项来玩耍。 查 完整的配置选项 来得到一个详尽的选项列表。 有几种安装 PHP 的方法。
作为 Apache 1.x 模块 或 Apache 2.x 模块。
同 AOLServer, NSAPI, phttpd, Pi3Web, Roxen, thttpd 或 Zeus 一起使用
作为 CGI 命令行
PHP 能够使用大量不同的方法编译,但是最常用的方式是作为 Apache 的模块。 下面是一个快速安装楷观。
例子 3-2. PHP 4 快速安装指导( Apache 模块版本)
|
本节内容适用于 Windows 98/Me 以及 Windows NT/2000/XP。PHP 不能在16位平台例如 Windows 3.1 下运行。有时我们把支持 PHP 的 Windows 平台称为 Win32。自 PHP 4.3.0 开始不再支持 Windows 95。
有两种方法安装 PHP for Windows:手工安装或者使用 InstallShield 安装。
如果你有 Microsoft Visual Studio,也可以编译 PHP 的源程序。
一旦在 Windows 系统下安装好 PHP 之后,你可能需要加载各种扩展库以实现更多的功能。
Windows版的 PHP 安装程序可以从 http://www.php.net/downloads.php 获得,此程序将安装 PHP 的 CGI 版本,并且自动配置好 IIS,PWS 和 Xitami 三种 Web 服务器。
注: 此外注意,尽管 InstallShield installer 是一种使 PHP 运行起来的简单方法,但是有很多限制,例如不支持自动设置扩展库。只有下载 zip 压缩包才包含了所有支持的扩展库。
安装好你选用的 HTTP 服务器并且确定工作正常。
运行可执行的安装程序并按照安装向导的提示进行安装。安装程序支持两种安装方法 - 标准,尽量提供最佳默认参数,高级,在安装过程中提问。
安装向导收集足够的信息来配置 php.ini 文件并且配置 Web 服务器来使用 PHP。在 NT Workstation 下的 IIS 和 PWS 中,会列出服务器上所有节点的脚本映射,你可以在这些节点中选择哪些加入 PHP 的脚本映射。
一旦安装结束,安装程序会提示是否需要重新启动系统。重启动服务器或者开始使用 PHP。
| 警告 |
注意,这样安装的 PHP 并不安全。如果你想要更安全的安装 PHP,最好手工进行,并且小心地配置每个选项。自动进行的安装程序只是提供一个可以马上使用的 PHP,并不意味着可以用在在线的服务器上。 |
本安装指南帮你手工安装和配置 PHP 到你的 Windows Webserver。本指南的原始版本由 Bob Silva 编译,位于 http://www.umesd.k12.or.us/php/win32install.html。你需要从 http://www.php.net/downloads.php 下载一个包含可执行版本的 zip 包。
PHP 4 的 Windows 版有三种方式 - CGI 可执行程序(php.exe),CLI 可执行程序(sapi/php.exe) 和其它一些 SAPI 模块:
| php4apache.dll - Apache 1.3.x 模块 |
| php4apache2.dll - Apache 2.0.x 模块 |
| php4isapi.dll - ISAPI 兼容服务器的 ISAPI 模块,例如 IIS 4.0/PWS 4.0 或更新版本 |
| php4nsapi.dll - Netscape/iPlanet 模块 |
| 警告 |
SAPI 模块在 4.1 版中有了显著的增强,但是,在一些老系统中,你也许会遇到可能的服务器错误或者其他的模块例如 ASP 失败。 |
DCOM and MDAC requirements: 如果你选择了其中一个 SAPI 模块并且是在 Windows 95 下使用,要确认从微软的 DCOM 页面下载安装了 DCOM 更新。如果使用 Windows 9x/NT4,需要下载最新版本的 Microsoft Data Access Components (MDAC),位于 http://www.microsoft.com/data/。
不论何种 Web 服务器,都需要先进行以下步骤:
将 PHP 压缩包释放到你选择的目录中。c:\ 就不错。压缩包会被释放到一个类似 php-4.3.1-Win32 的新目录中,该目录最好被改名为 php。为方便以及版本无关起见,以下步骤中假定 PHP 位于 c:\php 中。可以选择其它的路径但最好不要用中间有空格的路径(例如:C:\Program Files\PHP 就不太好),如果这样做有些 Web 服务器会崩溃。解压缩后的 PHP 目录结构看上去像这样:
c:\php | +--cli | | | |-php.exe -- CLI 可执行程序 - 仅用于命令行脚本 | | +--dlls -- 支持扩展库的 dll --> Windows 系统目录 | | | |-expat.dll | | | |-fdftk.dll | | | |-... | +--extensions -- PHP 扩展库的 dll | | | |-php_bz2.dll | | | |-php_cpdf.dll | | | |-.. | +--mibs -- SNMP 的支持文件 | | +--openssl -- Openssl 的支持文件 | | +--pdf-related -- PDF 的支持文件 | | +--sapi -- SAPI dlls | | | |-php4apache.dll | | | |-php4apache2.dll | | | |-php4isapi.dll | | | |-.. | |-install.txt | |-.. | |-php.exe -- CGI 可执行程序 | |-.. | |-php.ini-dist | |-php.ini-recommended | |-php4ts.dll -- 主 dll --> Windows 系统目录 | |-... |
CGI 程序 - C:/php/php.exe -,CLI 程序 - c:\php\cli\php.exe -,和 SAPI 模块 - c:\php\sapi\*.dll - 依赖于主 dll c:\php\php4ts.dll。必须确认此 dll 可以被 PHP 找到。寻找此 dll 的顺序如下:
| 调用 php.exe 的目录。如果是用 SAPI 模块则为 webserver 调用 dll 的目录(例如 php4apache.dll)。 |
| Windows 路径环境变量 PATH 中的任何目录。 |
最好是无论使用何种接口(CGI 或者 SAPI)都确保 php4ts.dll 可用,因此必须将此文件放到 Windows 路径中。最好的位置是 Windows 的 system 目录:
| c:\windows\system for Windows 9x/ME |
| c:\winnt\system32 for Windows NT/2000 或者 c:\winnt40\system32 for Windows NT/2000 服务器版 |
| c:\windows\system32 for Windows XP |
下一步是设定有效的 PHP 配置文件,php.ini。压缩包中包括两个 ini 文件,php.ini-dist 和 php.ini-recommended。建议使用 php.ini-recommended,因为此文件对默认设置作了性能和安全上的优化。仔细阅读此文件中的说明并研究 ini 设置 一章来亲自人工设定每个项目。如果要达到最佳的安全效果,则最好用这个文件,尽管 PHP 在默认的 ini 文件下也工作的很好。将选择的 ini 文件拷贝到 PHP 能够找到的目录下并改名为 php.ini。PHP 默认在 Windows 目录下搜索 php.ini:
| 在 Windows 9x/ME/XP 下将选择的 ini 文件拷贝到 %WINDIR%,通常为 c:\windows。 |
| 在 Windows NT/2000 下将选择的 ini 文件拷贝到 %WINDIR% 或 %SYSTEMROOT% 下,通常为 c:\winnt 或 c:\winnt40 对应于服务器版本。 |
如果在 Windows NT,2000 或 XP 中使用了 NTFS,确保运行 webserver 的用户名对 php.ini 有读取的权限(例如使其对 Everyone 可读)。
以下步骤为可选项。
编辑 php.ini 文件。如果计划用 OmniHTTPd,不要进行下一步。将 doc_root 指向 webserver 的 document_root。例如:
选择在 PHP 启动时需要加载的扩展库。如何设定以及那些已经内置请阅读 Windows 扩展一章。注意在新安装之后建议先确定 PHP 在没有任何扩展时运行正常然后再在 php.ini 中加载任何扩展库。
在 PWS 和 IIS 下,可以设定 browscap 配置其指向 c:\windows\system\inetsrv\browscap.ini(Windows 9x/Me)或 c:\winnt\system32\inetsrv\browscap.ini(Windows NT/2000)或 c:\windows\system32\inetsrv\browscap.ini(Windows XP)。
按照这些指示已经完成了 Windows 下设定 PHP 的基本步骤。下一步是选择 webserver 并使其运行 PHP。对于以下 webserver 有安装指南:
.. Windows 服务器系列,Personal Web server (PWS) 3 和 4 或更新版;Internet Information Server (IIS) 3 和 4 或更新版。
.. Apache 服务器。Apache 1.3.x 和 Apache 2.x。
.. Netscape/iPlanet 服务器。
.. OmniHTTPd 服务器。
.. Oreilly Website Pro 服务器。
.. Sambar 服务器。
.. Xitami 服务器。
开始之前,很值得回答一下这个问题:“为什么在 Windows 下编译这么难?”两个原因:
Windows 下还没有愿意免费共享代码的开发人员群体。直接结果就是没有足够的投资去建立支持这种开发方式的体系。大体上,尽量做到的可用资源都是从 UNIX 下的工具来的。不要奇怪这种传统不时会出现。
下面几乎所有的说明都是“看过就忘”的类型。所以坐稳当并且尽可能忠实地按照说明来做。
要编译 PHP 你需要 Microsoft 开发环境。推荐使用 Microsoft Visuaul C++ 6.0。要释放下载的文件还需要一个解压缩工具(例如:Winzip)。如果你还没有解压缩的工具,可以从 InfoZip 免费下载一个。
在开始之前,你需要下载...
PHP 站点中 http://www.php.net/extra/win32build.zip 的 win32 编译工具。
PHP 使用的 DNS 解析器的源代码:http://www.php.net/extra/bindlib_w32.zip。用这个替代 win32build.zip 中的 resolv.lib。
如果你计划把 PHP 编译成 Apache 的静态模块那你还需要 Apache 源程序。
最后,你还需要 PHP 4 的源代码。你可以通过匿名 CVS 得到最新的开发版本,一个快照或者最新发行版本的源程序的打包文件。
下载了所有的包后需要将他们解压缩到适当的位置。
建立一个工作目录作为解压缩后存放所有文件的地方,例如:c:\work。
在你的工作目录(c:\work)下新建一个目录 win32build 并将 win32build.zip 解压缩到其中。
在你的工作目录(c:\work)下新建一个目录 bindlib_w32 并将 bindlib_w32.zip 解压缩到其中。
将下载的 PHP 源程序解压缩到工作目录(c:\work)中。
+--c:\work | | | +--bindlib_w32 | | | | | +--arpa | | | | | +--conf | | | | | +--... | | | +--php-4.x.x | | | | | +--build | | | | | +--... | | | | | +--win32 | | | | | +--... | | | +--win32build | | | | | +--bin | | | | | +--include | | | | | +--lib |
注: Cygwin 用户应该忽略最后一步。正确安装的 Cygwin 环境已经提供了 bison.simple 和 bison.exe 文件。
下一步是配置 MVC ++ 来准备编译。运行 Microsoft Visual C++,在菜单中选择 Tools => Options。在对话框中,选择 directories 标签。依次将下拉框改为 Executables,Includes 和 Library files。将其修改为:
Executable files: c:\work\win32build\bin, Cygwin 用户:cygwin\bin
Include files: c:\work\win32build\include
Library files: c:\work\win32build\lib
必须编译 resolv.lib 库。自己决定是需要调试信息(bindlib - Win32 Debug)还是不需要(bindlib - Win32 Release)。编译适当的配置:
图形界面用户,运行 VC++,选择 File => Open Workspace,找到 c:\work\bindlib_w32 目录并选择 bindlib.dsw 文件。 菜单并选择 bindlib。接着选择 Build => Set Active Configuration 菜单并选择需要的配置。最后选择 Build => Rebuild All。
命令行用户,确认你要么注册了 C++ 环境变量,要么运行了 vcvars.bat,然后运行下面任意一个:
msdev bindlib.dsp /MAKE "bindlib - Win32 Debug"
msdev bindlib.dsp /MAKE "bindlib - Win32 Release"
对于初学者最好的上手方法是编译 CGI 版本。
图形界面用户,运行 VC++,选择 File => Open Workspace 菜单并选择 c:\work\php-4.x.x\win32\php4ts.dsw。接着选择 Build => Set Active Configuration 菜单并选择想要的配置,要么 php4ts - Win32 Debug_TS 或者是 php4ts - Win32 Release_TS。最后选择 Build => Rebuild All。
命令行用户,确认你要么注册了 C++ 环境变量,要么运行了 vcvars.bat,然后在 c:\work\php-4.x.x\win32 目录下运行下面任意一个命令:
msdev php4ts.dsp /MAKE "php4ts - Win32 Debug_TS"
msdev php4ts.dsp /MAKE "php4ts - Win32 Release_TS"
到这一步,你应该得到一个可用的 php.exe 在你的 c:\work\php-4.x.x.\Debug_TS 或者 Release_TS 目录下。
有可能通过编辑 main/config.win32.h 文件对编译做少量的定制。例如你可以改变默认的 php.ini 文件,内置的扩展库,以及扩展库的位置。
下一步你可能想要编译 CLI 版本,这是设计用于 PHP 的命令行方式。步骤和编译 CGI 版本相同,只除了要选择 php4ts_cli - Win32 Debug_TS 或者 php4ts_cli - Win32 Release_TS 工程文件。在成功编译之后你会在 Release_TS\cli\ 或者 Debug_TS\cli\ 目录下发现 php.exe 文件。
注: 如果你想使用 PEAR 或者舒适的命令行安装程序,就非要用 CLI-SAPI。有关 PEAR 和安装程序的更多信息见 PEAR 网站文档。
要编译 SAPI 模块(php4isapi.dll)来将 PHP 和 Microsoft IIS 集成起来,将激活的配置设为 php4isapi-whatever-config 并编译所需要的 dll。
在安装好 PHP 和 Webserver 之后,你可能想安装一些扩展库以增加功能。你可以通过编辑 php.ini 来选择哪些扩展库在 PHP 启动时被加载。你也可以在程序中用 dl() 函数动态加载。
PHP 4 扩展库的 DLL 文件开头都是 'php_'(PHP 3 中是 'php3_' )。这避免了 PHP 扩展库和它们的支持库混淆。
注: 在PHP 4.3.1 版中 BCMath,Calendar,COM,Ctype,FTP,MySQL,ODBC,Overload,PCRE,Session,Tokenizer,WDDX,XML 和 Zlib 的支持都是内置的。不需要加载任何扩展库就可以使用这些函数。你可以通过自己的版本中的 README.txt 或者 install.txt 文件或者此表格来查看哪些模块是内置的。
PHP 搜索扩展库的默认位置是 c:\php4\extensions。要改变此设置来反映你对 PHP 的配置,编辑 php.ini 文件:
需要修改 extension_dir 设置将其指向扩展库所在的目录,或者放置 php_*.dll 文件的目录。不要忘记最后的斜线,例如:
通过取消 php.ini 文件中 extension=php_*.dll 行前面的注释来激活相应的扩展库。只要删除最前面的 ; 号就可以加载与其对应的扩展库。
某些扩展库需要附加的 dll 文件才能工作。其中一部分可以在压缩包中找到,在 c:\php\dlls\ 目录下,但有一些,例如 Oracle(php_oci8.dll)需要的 dll 没有在压缩包中绑定。将绑定的 dll 从 c:\php\dlls 目录拷贝到 Windows 路径中,例如:
| c:\windows\system for Windows 9x/Me |
| c:\winnt\system32 for Windows NT/2000 |
| c:\windows\system32 for Windows XP |
注: 如果你运行 PHP 的服务器模块版本,记得重启动 webserver 来使你对 php.ini 的改动生效。
下表说明了一些可用的扩展库和所需要的附加 dll 文件。
表格 3-1. PHP 扩展库
| 库名 | 说明 | 注意 |
|---|---|---|
| php_bz2.dll | bzip2 压缩函数库 | 无 |
| php_calendar.dll | Calendar 转换函数库 | 自 PHP 4.0.3 起内置 |
| php_cpdf.dll | ClibPDF 函数库 | 无 |
| php_crack.dll | Crack 函数库 | 无 |
| php3_crypt.dll | 加密函数库 | 未知 |
| php_ctype.dll | ctype 族函数库 | 自 PHP 4.3.0 起内置 |
| php_curl.dll | CURL,客户端 URL 函数库 | 需要 libeay32.dll,ssleay32.dll(已包含) |
| php_cybercash.dll | Cybercash 支付函数库 | PHP <= 4.2.0 |
| php_db.dll | DBM 函数库 | 不赞成使用。用 DBA 代替(php_dba.dll) |
| php_dba.dll | DBA:数据库(dbm-style)抽象层函数库 | 无 |
| php_dbase.dll | dBase 函数库 | 无 |
| php3_dbm.dll | Berkeley DB2 库 | 未知 |
| php_dbx.dll | dbx 函数库 | |
| php_domxml.dll | DOM XML 函数库 | PHP <= 4.2.0 需要 libxml2.dll(已包含) PHP >= 4.3.0 需要 iconv.dll(已包含) |
| php_dotnet.dll | .NET 函数库 | PHP <= 4.1.1 |
| php_exif.dll | 从 JPEG 读取 EXIF 头信息 | 无 |
| php_fbsql.dll | FrontBase 函数库 | PHP <= 4.2.0 |
| php_fdf.dll | FDF:表单数据格式化函数库. | 需要 fdftk.dll(已包含) |
| php_filepro.dll | filePro 函数库 | 只读访问 |
| php_ftp.dll | FTP 函数库 | 自 PHP 4.0.3 起内置 |
| php_gd.dll | GD 库图像处理函数库 | 在 PHP 4.3.2 中删除了。还要注意 GD1 中不能用真彩色函数,应该用 php_gd2.dll 替代。 |
| php_gd2.dll | GD2 库图像函数库 | GD2 |
| php_gettext.dll | Gettext 函数库 | PHP <= 4.2.0 需要 gnu_gettext.dll(已包含),PHP >= 4.2.3 需要 libintl-1.dll,iconv.dll(已包含) |
| php_hyperwave.dll | HyperWave 函数库 | 无 |
| php_iconv.dll | ICONV 字符集转换 | 需要 iconv-1.3.dll(已包含),PHP >=4.2.1 需要 iconv.dll |
| php_ifx.dll | Informix 函数库 | 需要 Informix 库文件 |
| php_iisfunc.dll | IIS 管理函数库 | 无 |
| php_imap.dll | IMAP POP3 和 NNTP 函数库 | PHP 3:php3_imap4r1.dll |
| php_ingres.dll | Ingres II 函数库 | 需要 Ingres II 库文件 |
| php_interbase.dll | InterBase 函数库 | 需要 gds32.dll(已包含) |
| php_java.dll | Java 函数库 | PHP <= 4.0.6 需要 jvm.dll(已包含) |
| php_ldap.dll | LDAP 函数库 | PHP <= 4.2.0 需要 libsasl.dll(已包含),PHP >= 4.3.0 需要 libeay32.dll,ssleay32.dll(已包含) |
| php_mbstring.dll | 多字节字符串函数库 | 无 |
| php_mcrypt.dll | Mcrypt 加密函数库 | 需要 libmcrypt.dll |
| php_mhash.dll | Mhash 函数库 | PHP >= 4.3.0 需要 libmhash.dll(已包含) |
| php_mime_magic.dll | Mimetype 函数库 | 需要 magic.mime(已包含) |
| php_ming.dll | Ming 函数库 - Flash 支持 | 无 |
| php_msql.dll | mSQL 函数库 | 需要 msql.dll(已包含) |
| php3_msql1.dll | mSQL 1 客户端 | 未知 |
| php3_msql2.dll | mSQL 2 客户端 | 未知 |
| php_mssql.dll | MSSQL 函数库 | 需要 ntwdblib.dll(已包含) |
| php3_mysql.dll | MySQL 函数库 | 自 PHP 4 起内置 |
| php3_nsmail.dll | Netscape 邮件函数库 | 未知 |
| php3_oci73.dll | Oracle 函数库 | 未知 |
| php_oci8.dll | Oracle 8 函数库 | 需要 Oracle 8.1 以上客户端库文件 |
| php_openssl.dll | OpenSSL 函数库 | 需要 libeay32.dll(已包含) |
| php_oracle.dll | Oracle 函数库 | 需要 Oracle 7 客户端库文件 |
| php_overload.dll | 对象重载函数库 | 自 PHP 4.3.0 内置 |
| php_pdf.dll | PDF 函数库 | 无 |
| php_pgsql.dll | PostgreSQL 函数库 | 无 |
| php_printer.dll | Printer 函数库 | 无 |
| php_shmop.dll | 共享内存函数库 | 无 |
| php_snmp.dll | SNMP 函数库 | 仅在 NT 下使用! |
| php_sockets.dll | Socket 函数库 | 无 |
| php_sybase_ct.dll | Sybase 函数库 | 需要 Sybase 客户端库文件 |
| php_tokenizer.dll | Tokenizer 函数库 | 自 PHP 4.3.0 起内置 |
| php_w32api.dll | W32api 函数库 | 无 |
| php_xmlrpc.dll | XML-RPC 函数库 | PHP >= 4.2.1 需要 iconv.dll(已包含) |
| php_xslt.dll | XSLT 函数库 | PHP <= 4.2.0 需要 sablot.dll,expat.dll(已包含)。PHP >= 4.2.1 需要 sablot.dll,expat.dll,iconv.dll(已包含)。 |
| php_yaz.dll | YAZ 函数库 | 无 |
| php_zlib.dll | ZLib 压缩函数库 | 自 PHP 4.3.0 起内置 |
默认为将 PHP 编译为 CGI 程序。这将建立一个命令行解释器,可用于 CGI 处理或非 web 相关的 PHP 脚本。如果你运行着一个 PHP 模块支持的 webserver,那通常为性能考虑应该使用模块方式。不过,CGI 版可以使 Apache 用户用不同的 user-id 运行不同的 PHP 页面。如果你要以 CGI 方式运行 PHP 请确保阅读过了安全一章。
自 PHP 4.3.0 起,PHP 有了一些重要的新增功能。又有了一个新的 SAPI 称为 CLI,和 CGI 程序同名。根据配置选项它安装在 {PREFIX}/bin/php,并在手册中PHP 的命令行模式一章中有详细说明。更多细节请阅读该章节。
如果将 PHP 3 编译为 CGI 程序,可以通过键入 make bench 来进行一下性能的基准测试。注意如果默认打开了安全模式,则如果超过 30 秒的允许范围测试可能不能完成。这是因为 set_time_limit() 不能用于安全模式。用 max_execution_time 配置选项来为你自己的脚本控制此时间限制。make bench 会忽略配置文件。
注: make bench 仅能用于 PHP 3。
某些服务器提供的环境变量没有定义在当前的 CGI/1.1 标准中。只有下列变量定义在其中,其它的都会被当作 'vendor extensions':AUTH_TYPE, CONTENT_LENGTH, CONTENT_TYPE, GATEWAY_INTERFACE, PATH_INFO, PATH_TRANSLATED, QUERY_STRING, REMOTE_ADDR, REMOTE_HOST, REMOTE_IDENT, REMOTE_USER, REQUEST_METHOD, SCRIPT_NAME, SERVER_NAME, SERVER_PORT, SERVER_PROTOCOL 和 SERVER_SOFTWARE。
本节包括 Apache 下安装 PHP 的说明和提示,包括 Unix 和 Windows 版本。我们在另外的页面也有 Apache 2 的安装和说明。
你可以根据完整配置选项列表在以下第 10 行中加入你选择的参数。这里把具体版本号略去了以确保本说明的不会出错。你需要把下面的 'xxx' 替换成你得到的文件中确切的数值。
例子 3-4. PHP 的 Apache 共享模块版本安装说明
|
根据你的 Unix 系统和 Apache 安装方法的不同,有很多方法停止和重启动 Apache。以下是一些不同的 Apache/Unix 下重启动 Apache 的典型命令。你需要把 /path/to/ 替换成你系统上的确切路径。
例子 3-5. 重启动 Apache 的示例命令
|
apachectl 和 http(s)dctl 程序所在的路径在不同系统中通常不一样。如果你的系统中有 locate 或者 whereis 或者 which 命令,那么可以帮你找到这些控制程序。
编译 PHP 和 Apache 的不同例子还有:
这个配置将生成在 Apache 的 httpd.conf 文件中用 LoadModule 加载的 libphp4.so 共享库。而 PostgreSQL 支持将嵌入到 libphp4.so 库中。
这个配置将生成 Apache 的 libphp4.so 共享库,并且还生成 pgsql.so 共享库,可以在 php.ini 文件中用 extension 指令加载,或者在 PHP 脚本中用 dl() 函数明确地加载。
这个配置将生成 libmodphp4.a 库,mod_php4.c 和一些相关的文件并且拷贝到 Apache 源程序目录中的 src/modules/php4 目录下。然后用 --activate-module=src/modules/php4/libphp4.a 编译 Apache,Apache 编译系统会生成 libphp4.a 并且将其静态地连接到 httpd 程序中。PostgreSQL 支持也直接包括在这个 httpd 程序中了,因此最终结果是单一的一个包括了所有 Apache 和 PHP 支持的 httpd 可执行文件。
这个配置和上面一样 - 除了没有在最后的 httpd 可执行文件中包括 PostgreSQL 的支持以及生成了一个 pgsql.so 共享库以外。该共享库可以在 php.ini 文件中或者用 dl() 函数加载。
当选择不同的方法编译 PHP 时,需要考虑每种方法的优势和缺点。用共享对象方式编译 PHP 意味着可以单独编译 Apache,并且不用在添加或修改了 PHP 的时候重新编译所有程序。用内置方法编译 PHP(静态方式)意味着 PHP 可以加载和运行得更快。更多信息见 Apache 的 DSO 支持页面。
注: Apache 默认的 httpd.conf 文件中目前包括类似如下的内容:
除非你把它修改成“Group nogroup”或者其它类似的(“Group daemon”也很通用),PHP 将不能打开文件。
注: 确认在使用 --with-apxs=/path/to/apxs 时指向 Apache 安装后的目录中的 apxs。绝对不能用 Apache 源程序中的 apxs 而要用安装后的 apxs。
有两种方式使 PHP 工作于 Windows 下的 Apache 1.3.x。一种是 CGI 方式(php.exe),另一种是使用 Apache 模块 DLL。不管哪种方式都需要停止 Apache,编辑 httpd.conf 来配置 Apache 以加入PHP支持。
值得在这里指出现在 Windows 下的 SAPI 模块更加稳定了,我们推荐使用模块方式,因为更加透明和安全。
尽管有几种不同方法在 Apache 下配置 PHP,但是对新手来说还是非常简单易用的。有关更多的 httpd.conf 配置指令请参考 Apache 文档。
如果你按照手工安装步骤一节中的说明把 PHP 解压缩到了 c:\php\ 目录下,那么需要加入以下三行到 Apache 配置文件中以 CGI 方式安装:
ScriptAlias /php/ "c:/php/"
AddType application/x-httpd-php .php .phtml
Action application/x-httpd-php "/php/php.exe"
| 警告 |
在 CGI 方式下,你的服务器可能会受到几种攻击的影响。阅 |