Windows 系统下的PHP安装

本节内容适用于 Windows 98/Me 以及 Windows NT/2000/XP/2003。PHP 不能在 16 位平台例如 Windows 3.1 下运行。有时把支持 PHP 的 Windows 平台称为 Win32。自 PHP 4.3.0 开始不再支持 Windows 95。

有两种方法在 Windows 下安装 PHP:手工安装或者使用安装程序安装。

如果有 Microsoft Visual Studio,也可以编译 PHP 的源程序。

一旦在 Windows 系统下安装好 PHP 之后,可能需要加载各种扩展库以实现更多的功能。

互联网上还有一些多合一的安装程序,但是它们没有一个是被 PHP.net 认可的,因为我们相信,手动安装是系统安全和优化的最好选择。

Windows 安装程序

PHP 的 Windows 安装程序可以在 http://www.php.net/downloads.php 下载。它会为 IIS、PWS 和 Xitami 安装 CGI 版本的 PHP,并配置好 web 服务器。该安装程序不包含任何外部的 PHP 扩展(PHP_*.dll)。如果需要,可以在 Windows ZIP 包和 PECL 中找到。

注: 虽然 Windows 安装程序是让 PHP 工作的最容易的方法,但是它有很多限制。例如,它不支持自动安装 PHP 扩展。使用安装程序安装 PHP 不是最好的方式。

首先,在系统中安装自己选择的 HTTP(web)服务器,并确认它正常工作。

运行安装程序,按照向导说明一步步安装。它支持两种安装类型:标准,将使用合理的默认配置进行安装;高级,会在配置中询问几个问题。

安装向导会收集足够的信息来设置 php.ini 文件,并配置好 web 浏览器以使用 PHP。PHP 安装程序不能自动配置 Apache,因此需要手动进行配置。

一旦安装完成,安装程序会提示重新启动系统,重启服务器,或直接开始使用 PHP。

请注意,这种安装方式安装的 PHP 不是安全的。如果需要一个安全的 PHP 设置,最好使用手动方式安装,并手动设置好每个选项。该自动安装程序能够让用户立即使用 PHP,但是这不意味着可以用于在线的服务器中。

手工安装步骤

本安装指南指导手动在一个 Microsoft Windows 的 web 服务器下安装和配置 PHP。安装前需要从 http://www.php.net/downloads.php 下载 PHP 的 ZIP 二进制发布包。

虽然目前有很多多合一的安装包,而且也发布了一个 Microsoft Windows 的 PHP 安装程序,但是仍然建议用户花些时间自己手动安装 PHP。因为这样才可以更加了解这套系统,并能够在需要的时候更方便的安装 PHP 扩展。

从旧版本的 PHP 升级: 上一版的手册建议将 ini 和多个 DLL 文件移动到系统文件夹(例如 C:\WINDOWS)。这一步骤虽然简化了安装过程,却导致升级上的困难。建议在使用新版本的 PHP 前删除所有这些文件(比如从 Windows 系统文件夹删除 php.ini 和 PHP 相关的 DLL 文件)。务必在删除前备份这些文件,因为这一操作可能破坏整个系统。原有的 php.ini 在安装新版本的 PHP 时也可用来参考。不久用户便会明白,安装 PHP 最好的方式便是将所有 PHP 有关的文件都放入同一目录,并在系统的 PATH 环境变量中设置此目录。

MDAC 需求: 如果使用 Microsoft Windows 98/NT4,需要下载适用于系统最新版本的 Microsoft Data Access Components(MDAC)。MDAC 可在 http://msdn.microsoft.com/data/ 下载。需要 MDAC 的原因是 Windows 二进制包中编译进了 ODBC 支持。

不论何种 web 服务器,都需要先进行以下步骤:

PHP 压缩包释放到选择的目录中。若使用 PHP 4,可以解压缩到 C:\,压缩包会被释放到一个类似 php-4.3.7-Win32 的新目录中。若使用 PHP 5,请解压缩到 C:\php,因为其 ZIP 包内没有类似 php-4.3.7-Win32 的目录信息。可以选择其它的路径但最好不要用中间有空格的路径(例如:C:\Program Files\PHP 就不太好),如果这样做有些 web 服务器会崩溃。

解压缩后的目录对应 PHP 4 和 5 是不同的。它们的目录结构分别为:

PHP 4 目录结构

PHP 4 目录结构
c:\php
   |
   +--cli
   |  |
   |  |-php.exe           -- CLI 可执行程序 - 仅使用在命令行脚本
   |
   +--dlls                -- 某些扩展需要的 DLL 文件
   |  |
   |  |-expat.dll
   |  |
   |  |-fdftk.dll
   |  |
   |  |-...
   |
   +--extensions          -- PHP 的扩展 DLL 文件
   |  |
   |  |-php_bz2.dll
   |  |
   |  |-php_cpdf.dll
   |  |
   |  |-..
   |
   +--mibs                -- SNMP 支持文件
   |
   +--openssl             -- Openssl 支持文件
   |
   +--pdf-related         -- PDF 支持文件
   |
   +--sapi                -- SAPI(服务器模块支持)DLL 文件
   |  |
   |  |-php4apache.dll
   |  |
   |  |-php4apache2.dll
   |  |
   |  |-..
   |
   +--PEAR                -- PEAR 的初始复本
   |
   |
   |-go-pear.bat          -- PEAR 安装脚本
   |
   |-..
   |
   |-php.exe              -- CGI 可执行文件
   |
   |-..
   |
   |-php.ini-dist         -- 默认的 php.ini 设置
   |
   |-php.ini-recommended  -- 推荐的 php.ini 设置
   |
   |-php4ts.dll           -- 核心 PHP DLL 文件
   |
   |-...

PHP 5 目录结构

PHP 5 目录结构
c:\php
   |
   +--dev
   |  |
   |  |-php5ts.lib
   |
   +--ext                 -- PHP 的扩展 DLL 文件
   |  |
   |  |-php_bz2.dll
   |  |
   |  |-php_cpdf.dll
   |  |
   |  |-..
   |
   +--extras
   |  |
   |  +--mibs             -- SNMP 支持文件
   |  |
   |  +--openssl          -- Openssl 支持文件
   |  |
   |  +--pdf-related      -- PDF 支持文件
   |  |
   |  |-mime.magic
   |
   +--pear                -- PEAR 的初始复本
   |
   |
   |-go-pear.bat          -- PEAR 安装脚本
   |
   |-fdftk.dll
   |
   |-..
   |
   |-php-cgi.exe          -- CGI 可执行文件
   |
   |-php-win.exe          -- 执行脚本时不弹出命令提示行窗口
   |
   |-php.exe              -- CLI 可执行程序 - 仅使用在命令行脚本
   |
   |-..
   |
   |-php.ini-dist         -- 默认的 php.ini 设置
   |
   |-php.ini-recommended  -- 推荐 php.ini 设置
   |
   |-php5activescript.dll
   |
   |-php5apache.dll
   |
   |-php5apache2.dll
   |
   |-..
   |
   |-php5ts.dll           -- 核心 PHP DLL 文件
   |
   |-...

请注意它们之间的不同和相似之处。PHP 4 和 PHP 5 都有一个 CGI 可执行文件、一个 CLI 可执行文件和服务器模块,但是它们位于不同的文件夹和/或有着不同的命名。PHP 4 将服务器模块放在 sapi 文件夹,而 PHP 5 并没有此目录,它的服务器模块文件位于 PHP 根文件夹中。PHP 5 的扩展支持 DLL 文件也并没有放在一个单独的目录中。

注: PHP 4 中,需要将位于 dll 和 sapi 文件夹中的文件移动到主文件夹中(例如 C:\php)。

下面是 PHP 4 和 PHP 5 附带的服务器模块列表:

  • sapi/php4activescript.dll (php5activescript.dll) - ActiveScript 引擎,允许将 PHP 嵌入 Windows 应用程序中。
  • sapi/php4apache.dll(php5apache.dll) - Apache 1.3.x 模块。
  • sapi/php4apache2.dll(php5apache2.dll) - Apache 2.0.x 模块。
  • sapi/php4isapi.dll(php5isapi.dll) - ISAPI 模块,支持 ISAPI 兼容的 web 服务器,比如 IIS 4.0/PWS 4.0 或更新版本。
  • sapi/php4nsapi.dll(php5nsapi.dll) - Sun/iPlanet/Netscape 服务器模块。
  • sapi/php4pi3web.dll(PHP 5 无此模块) - Pi3Web 服务器模块。

服务器模块比 CGI 可执行程序提供了更好的性能和更多的功能。CLI 版本是为使用 PHP 命令行脚本而设计的。关于 CLI 的更多信息可以在 PHP 的命令行模式一章中找到。

SAPI 模块在 4.1 中有较多的增强。但是,在老系统中可能会产生服务器错误,或导致服务器的其它模块停止工作,比如 ASP。

CGI 和 CLI 可执行文件以及 web 服务器模块都需要 php4ts.dll(php5ts.dll)。必须确认该文件可以在 PHP 安装路径中找到。对该 DLL 的搜索顺序为:

  • 调用 php.exe 时所在的目录,或者若使用 SAPI 模块时,web 服务器的目录(例如 C:\Program Files\Apache Group\Apache2\bin)。
  • 任何在 Windows 的 PATH 环境变量中指定的目录。

要让 php4ts.dll / php5ts.dll 能正确被搜索到,有下面三个选择:

复制该文件到 Windows 系统目录,复制该文件到 web 服务器的目录,或者把 PHP 目录(例如 C:\php)添加到 PATH 环境变量中。为了将来更好的维护,建议使用最后一个选择,将 PHP 目录添加到 PATH 环境变量中,因为这样更便于将来升级 PHP。在相应的常见问题解答项目中可以了解如何将 PHP 目录添加到 PATH 环境变量中。

下一步是为 PHP 设置一个有效的配置文件,php.ini。在 ZIP 包中有两个 ini 文件,php.ini-dist 和 php.ini-recommended。建议使用 php.ini-recommended,因为在该文件中优化了性能和安全。请仔细阅读该文件中的注释,因为它从 php.ini-dist 修改而来,会对设置产生较大的影响。例如将 display_errors 设置为 off,将 magic_quotes_gpc 设置为 off。除了阅读这些部分,还可以学习一下 ini 设置,并手动设置每一个配置项目。如果想要最安全的设置,这是最好的方法,虽然 PHP 在默认配置下也是很安全的。复制所选择的 ini 文件到 PHP 能找到的目录中,并将其重命名为 php.ini。PHP 搜索 php.ini 的路径在配置文件一节已有介绍。

如果使用 Apache 2,更简单的选择是使用 PHPIniDir 指令(请阅读在 Apache 2 下的安装);若不是,最好的选择是设置 PHPRC 环境变量。它在此常见问题解答项目中进行了解释。

注: 如果在 Windows NT、2000、XP 或 2003 中使用 NTFS 分区,请确认运行 web 服务器的用户有权限读取 php.ini(例如将其设置为 Everyone 可读)

下面的步骤是可选的:

  • 编辑新的 php.ini 文件。如果计划使用 OmniHTTPd,不要执行下一步。设置 doc_root 并指向 web 服务器的 document_root。例如:
    doc_root = c:\inetpub\wwwroot // for IIS/PWS
    
    doc_root = c:\apache\htdocs // for Apache
    
  • 选择 PHP 装载的扩展库。请阅读关于 Windows 扩展一节以了解如何设置扩展库,以及哪些功能已经内置无需扩展库。请注意建议在全新安装时先不要在 php.ini 中加载任何扩展库,首先要保证 PHP 自身能够正常工作。
  • 在 PWS 和 IIS,可以设置 browscap 配置:在 Windows 9x/Me 中指向 c:\windows\system\inetsrv\browscap.ini,在 NT/2000 中指向 c:\winnt\system32\inetsrv\browscap.ini,在 XP 中指向 c:\windows\system32\inetsrv\browscap.ini。要得到最新版本的 browscap.ini,请阅读如下常见问题解答项目。

PHP 现在已经安装在系统中了。接下来一步是选择一个 web 服务器,并为之启用 PHP。请在本章目录中选择一个 web 服务器以了解更详细的安装步骤。

ActiveScript

本节将介绍有关 ActiveScript 安装需要注意的方面。

ActiveScript 是一个只运行在 Windows 下的 SAPI,可以在任何兼容 ActiveScript 的主机上使用 PHP 脚本,例如 Windows Script Host、ASP/ASP.NET、Windows Script Components 或 Microsoft Scriptlet control。

PHP 5.0.1 以后,ActiveScript 被移动到了PECL 库。可以从 PHP 下载页面或者 http://snaps.php.net/ 下载此 PECL 扩展的 DLL 文件。

注: 应该首先阅读手动安装步骤

PHP 安装完成后,应该下载 ActiveScript DLL(php5activescript.dll)并将其放入 PHP 主目录(例如 C:\php)。

准备好全部所需文件后,必须在系统中注册 DLL。做法是打开命令提示行窗口(位于开始菜单),然后输入类似 cd C:\php 的命令进入 PHP 目录,最后输入 regsvr32 php5activescript.dll 注册该 DLL。

要测试 ActiveScript 是否正确工作,请创建一个新文件,命名为 test.wsf(这个扩展名很重要)然后输入:

输入
 <job id="test">
 
 <script language="PHPScript">
  $WScript->Echo("Hello World!");
 </script>
 
</job>

保存并双击这个文件。如果您看到一个小窗口,内容为“Hello World!”,说明安装成功。

注:PHP 4 中,该引擎被命名为“ActivePHP”,如果使用 PHP 4,应该将上例中的“PHPScript”替换为“ActivePHP”。

注: ActiveScript 不使用默认的 php.ini 文件,而仅在调用它的 .exe 文件所在目录中寻找。如果想装载 PHP 扩展等,应该创建 php-activescript.ini 并将其放入那个目录。

Microsoft IIS/PWS

本节包括针对 IIS(Microsoft Internet Information Server)的说明与提示。

如果使用 CGI 方式安装,则服务器对于某些可能的攻击是开放的。请阅读 CGI 安全一章以学习如何防御这些攻击。

PHP 与 IIS 安装的通用事项

  • 首先请阅读手工安装步骤。不要跳过这一步,这里提供了将 PHP 安装到 Windows 中的极其重要的信息。

  • CGI 用户必须在 php.ini 中将 cgi.force_redirect 指令设为 0。其重要细节请阅读 FAQ 中的cgi.force_redirect。此外,CGI 用户可能需要设定 cgi.redirect_status_env 指令。在使用这些指令时,确保它们没有在 php.ini 中被注释掉。

  • PHP 4 的 CGI 文件名是 php.exe 而在 PHP 5 中是 php-cgi.exe。在 PHP 5 中,php.exe 是 CLI 版本,不是 CGI。

  • 修改 Windows 的 PATH 环境变量以把 PHP 目录包括进去。这样 PHP 的 DLL 文件,可执行文件和 php.ini 就都可以保留在 PHP 目录中而不用把 Windows 系统目录搞乱了。更多细节见 FAQ 中的设定路径 PATH。

  • IIS 专用用户(通常为 IUSR_MACHINENAME)需要能够读取各个文件和目录的权限,例如 php.ini,docroot 和 session 的 tmp 目录。

  • 确保在 php.ini 中正确设定了 extension_dir 和 doc_root 指令的值。这些指令依赖于 PHP 被安装的系统。在 PHP 4 中,extension_dir 是 extensions 而在 PHP 5 中是 ext。因此在 PHP 5 中 extensions_dir 的一个取值例子是 “c:\php\ext”,IIS 的 doc_root 的取值例子是 “c:\Inetpub\wwwroot”。

  • PHP 扩展库的 DLL 文件,如 php_mysql.dll 和 php_curl.dll,存放于 PHP 下载的 ZIP 包中(自动安装包里没有)。在 PHP 5 中,很多扩展库都是 PECL 的一部分,可以从“Collection of PECL modules”包中下载,例如 php_zip.dll 和 php_ssh2.dll。点击进入 PHP 下载页。

  • 在定义应用程序扩展名映射时,应选中“检查文件是否存在”。以极小的性能为代价,IIS(或者 PWS)会在调用 PHP 之前检查脚本文件是否存在并选出认证方法。这意味着 web 服务器会提供一个有道理的 404 形式错误信息而不是一条 CGI 错误说什么 PHP 没有输出任何数据。
©2011 LOVEAN.COM 浏览前必读 | 网站地图 | 联系我们