本章包含有在 Microsoft Windows 中手工安装和配置 PHP 的指示。有关如何使用 PHP 安装程序在 Windows 下安装和配置 PHP 以及 web 服务器,请参阅 Windows 安装程序(PHP 5.2 及更新版本)一章。
从 » PHP for Windows: Binaries and Sources 页面下载 PHP 的 zip 二进制发行包。有几个不同版本,根据所用 web 服务器选择合适的版本:
如果是用于 IIS 则选择 PHP 5.3 VC9 Non Thread Safe 或者 VC6 Non Thread Safe;
如果是用 IIS7 或更高版本以及 PHP 5.3+,则应选择 VC9 的包;
如果是用于 Apache 1 或 Apache 2 则选择 PHP 5.3 VC6 或者 PHP 5.2 VC6。
Note:
VC9 版本是用 Visual Studio 2008 编译的并且在性能和稳定性上都有所提高。VC9 版本需要用户系统中安装有 » Microsoft 2008 C++ Runtime (x86) 或者 » Microsoft 2008 C++ Runtime (x64)。
将 zip 包解压缩到自己选择的目录,例如 C:\PHP\。此目录和文件结构类似于:
Example #1 PHP 5 压缩包的结构
c:\php | +--dev | | | |-php5ts.lib -- php5.lib 的非线程安全版本 | +--ext -- PHP 扩展库的 DLL 文件目录 | | | |-php_bz2.dll | | | |-php_cpdf.dll | | | |-... | +--extras -- 空 | +--pear -- PEAR 的初始版本 | | |-go-pear.bat -- PEAR 安装脚本 | |-... | |-php-cgi.exe -- CGI 可执行文件 | |-php-win.exe -- 无窗口执行脚本的可执行文件 | |-php.exe -- PHP 命令行可执行文件(CLI) | |-... | |-php.ini-development -- 默认的 php.ini 设置 | |-php.ini-production -- 推荐的 php.ini 设置 | |-php5apache2_2.dll -- 非线程安全版本中无此文件 | |-php5apache2_2_filter.dll -- 非线程安全版本中无此文件 | |-... | |-php5ts.dll -- PHP 核心 DLL(php5.dll 的非线程安全版本) | |-...
以下是 PHP zip 包中包含的模块和可执行文件列表:
go-pear.bat - PEAR 安装脚本。更多内容参见» 安装 PEAR。
php-cgi.exe - CGI 可执行文件,可用于 IIS 上以 CGI 或者 FastCGI 方式运行 PHP。
php-win.exe - PHP 可执行文件,可运行 PHP 脚本而不打开命令行窗口(例如使用 Windows 图形界面的 PHP 程序)。
php.exe - PHP 可执行文件,用于命令行界面运行 PHP 脚本(CLI)。
php5apache2_2.dll - Apache 2.2.X 模块。
php5apache2_2_filter.dll - Apache 2.2.X 过滤器。
解压缩 PHP 的包之后,将 php.ini-production 拷贝为 同一目录下的 php.ini。如有必要,也可以将 php.ini 放到其它地方,但是需要更多配置步骤,具体见配置文件。
php.ini 文件决定 PHP 如何配置自身以及如何在其工作环境下运行。以下 php.ini 文件中的配置指令有助于使 PHP 更好地运行于 Windows 之中。有一些是可选项。还有很多其它指令也可能与用户环境有关,更多信息见 php.ini 配置选项列表。
必须的指令:
extension_dir = <指向扩展库目录的路径> - extension_dir 需要指向存放 PHP 扩展库文件的目录。可以是绝对路径(如 "C:\PHP\ext")或相对路径(如 ".\ext")。在 php.ini 文件中要加载的扩展库都必须在 extension_dir 所指定的目录之中。
extension = xxxxx.dll - 对每个需要激活的扩展,都需要一行相应的 "extension=" 语句来说明 PHP 启动时加载 extension_dir 目录下的哪些扩展。
log_errors = On - PHP 有错误日志的功能可以将错误报告发送到一个文件中,或者系统服务中(例如系统日志),与下面的 error_log 指令配合工作。在 IIS 下运行时,log_errors 应被激活,并且配合有效的 error_log。
error_log = <指向错误日志文件的路径> - error_log 需要指向一个具有绝对或相对路径的文件名用于记录 PHP 的错误日志。Web 服务器需要对此文件有可写权限。最常用的位置是各种临时目录,例如 "C:\inetpub\temp\php-errors.log"。
cgi.force_redirect = 0 - 在 IIS 下运行时需要关闭此项指令。这是个在许多其它 web 服务器中都需要激活的目录安全功能,但是在 IIS 下如果激活则会导致 PHP 引擎在 Windows 中出错。
cgi.fix_pathinfo = 1 - 此指令可以允许 PHP 遵从 CGI 规则访问真实路径信息。IIS 的 FastCGI 实现需要激活此指令。
fastcgi.impersonate = 1 - IIS 下的 FastCGI 支持模拟呼叫用户方安全令牌的能力。这使得 IIS 可以定义请求方的安全上下文。
fastcgi.logging = 0 - FastCGI 日志在 IIS 下应被关闭。如果激活,则任何类的任何消息都被 FastCGI 视为错误条件从而导致 IIS 产生 HTTP 500 错误。
可选指令:
max_execution_time = ## - 此指令设定任何脚本所能够运行的最长时间。默认值是 30 秒。如果 PHP 程序需要更多时间运行则增大此值。
memory_limit = ###M - PHP 进程能够占用的内存,单位为兆字节。默认值是 128M,对大多数程序都够用了。某些复杂程序可能需要更多。
display_errors = Off - 此指令设定 PHP 是否将任何错误信息包含在返回给 web 服务器的数据流中。如果设定为 "On",则 PHP 将任何由 error_reporting 指令所定义的错误信息作为错误数据流发给 web 服务器。为安全起见,建议对在线服务器设为 "Off" 以避免泄露任何可能包含在错误消息中的安全敏感信息。
open_basedir = <指向目录的路径,由分号分隔> - 例如 openbasedir="C:\inetpub\wwwroot;C:\inetpub\temp"。此指令指定了允许 PHP 进行文件系统操作的目录。任何对这些目录之外的文件操作都会导致错误。此指令在共享主机环境中特别有用,可以阻止 PHP 脚本访问任何其网站根目录之外的文件。
upload_max_filesize = ###M 和 post_max_size = ###M - 分别是上传文件的最大大小和 POST 方法提交数据的最大大小。如果 PHP 程序需要上传大型数据例如照片和视频文件,则应提高这两项的值。
至此已在系统中安装了 PHP。下一步是选择一种 web 服务器并且使其能够运行 PHP。在目录中选择 web 服务器。
除了可在 web 服务器中运行 PHP 之外,PHP 还可以在命令行运行,如同 .BAT 批处理脚本一样。详见 Windows 下的 PHP 命令行方式。