Windows 系统下的安装
本节内容适用于 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 InstallShield
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 模块
|
最后一种是 PHP 4
新提供的方式,提供了显著的性能增长以及一些新功能。还有一个
CLI 版本在
PHP
的命令行模式一章中有进一步说明。
警告 |
SAPI 模块在 4.1 版中有了显著的增强,但是,在一些老系统中,你也许会遇到可能的服务器错误或者其他的模块例如 ASP 失败。
|
不论何种 Web 服务器,都需要先进行以下步骤:
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
|
如果计划在 c:\php\sapi 目录下使用
SAPI 模块而不想把 dll 文件拷贝到 Windows 的 system
目录,则可以将 php4ts.dll
拷贝到 sapi 目录下:c:\php\sapi。
下一步是设定有效的 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 下编译这么难?”两个原因:
Windows 下还没有愿意免费共享代码的开发人员群体。直接结果就是没有足够的投资去建立支持这种开发方式的体系。大体上,尽量做到的可用资源都是从
UNIX 下的工具来的。不要奇怪这种传统不时会出现。
下面几乎所有的说明都是“看过就忘”的类型。所以坐稳当并且尽可能忠实地按照说明来做。
需求
要编译 PHP 你需要 Microsoft 开发环境。推荐使用
Microsoft Visuaul C++
6.0。要释放下载的文件还需要一个解压缩工具(例如:Winzip)。如果你还没有解压缩的工具,可以从
InfoZip 免费下载一个。
在开始之前,你需要下载...
最后,你还需要 PHP 4 的源代码。你可以通过匿名 CVS 得到最新的开发版本,一个快照或者最新发行版本的源程序的打包文件。
放到一起
下载了所有的包后需要将他们解压缩到适当的位置。
建立一个工作目录作为解压缩后存放所有文件的地方,例如:c:\work。
在你的工作目录(c:\work)下新建一个目录
win32build 并将 win32build.zip
解压缩到其中。
在你的工作目录(c:\work)下新建一个目录
bindlib_w32 并将 bindlib_w32.zip
解压缩到其中。
将下载的 PHP 源程序解压缩到工作目录(c:\work)中。
经过这些步骤后你的目录结构应该如下:
新建一个目录
c:\usr\local\lib。将
c:\work\win32build\bin 中的
bison.simple 拷贝到
c:\usr\local\lib中去。
注:
Cygwin 用户应该忽略最后一步。正确安装的
Cygwin 环境已经提供了 bison.simple 和
bison.exe 文件。
配置 MVC ++
下一步是配置 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
Build resolv.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,然后运行下面任意一个:
到这一步,你应该得到一个
resolv.lib 在你的
c:\work\bindlib_w32\Debug 或者
Release
目录下。拷贝此文件到
c:\work\win32build\lib
目录下并且覆盖同名的文件。
编译
对于初学者最好的上手方法是编译 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。
Windows 扩展库的安装
在安装好 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 行前面的注释来激活相应的扩展库。只要删除最前面的
; 号就可以加载与其对应的扩展库。
例子 3-3. 在 PHP-Windows 中激活 Bzip2 扩展 // 将下面这一行从:
;extension=php_bz2.dll
// 改成
extension=php_bz2.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 起内置 |