本节包括在 Microsoft Windows 平台的 Apache 下安装 PHP 的说明和提示。在另外的页面也有 Apache 2 的安装和说明。
Note:
请先阅读手动安装步骤!
有两种方式让 PHP 工作在 Windows 下的 Apache 1.3.x 中。首先是使用 CGI 可执行程序(PHP 4 下为 php.exe,PHP 5 下为 php-cgi.exe),另外一种方式是使用 Apache 模块 DLL。无论是那种方式,都需要修改 httpd.conf 来配置 Apache,使 PHP 能够在其上运行,然后都需要重启服务。
值得注意的是,现在 Windows 下的 SAPI 模块已经稳定得多,我们建议首先考虑使用 SAPI 而不要使用 CGI 可执行程序。因为 SAPI 更加透明和安全。
虽然还有些其它的方法来在 Apache 下配置 PHP,下面介绍的方法是最简单并适用于新手的。请参考 Apache 的文档以获得更多的配置参数。
在修改完配置文件后,请记得重启 Apache 服务。例如,如果把 Apache 作为 Windows 的一个服务来运行,那么在命令提示行下使用 NET STOP APACHE命令然后再使用 NET START APACHE命令便可重启服务。也可以使用重启 Apache 服务的快捷方式来重启。
Note: 记住当在 Windows 环境下的 Apache 配置文件中添加路径值时,所有的反斜线,如 c:\directory\file.ext,应转换为正斜线: c:/directory/file.ext。对目录来说,也必须由斜线结尾。
应该将下面几行加入 Apache 的 httpd.conf 文件:
Example #1 PHP 作为 Apache 1.3.x 的一个模块
这里假设 PHP 安装在 c:\php。如果不是这样请根据情况修改路径。
对于 PHP 4:
# 在 LoadModule 一节的末尾添加 # 不要忘记将该文件从 sapi 复制出来 LoadModule php4_module "C:/php/php4apache.dll" # 在 AddModule 一节的末尾添加 AddModule mod_php4.c
对于 PHP 5:
# 在 LoadModule 一节的末尾添加 LoadModule php5_module "C:/php/php5apache.dll" # 在 AddModule 一节的末尾添加 AddModule mod_php5.c
两个 PHP 版本都需要添加的内容:
# 将下面这行添加到 <IfModule mod_mime.c> 条件块中 AddType application/x-httpd-php .php # 如果要使用语法高亮的 .phps 文件,需要添加 AddType application/x-httpd-php-source .phps
如果按照手工安装步骤将 PHP 解压到 C:\php\,需要在 Apache 的配置文件中添加如下内容以使 PHP 按照 CGI 方式运行:
Example #2 PHP 以 CGI 方式运行在 Apache 1.3.x
ScriptAlias /php/ "c:/php/" AddType application/x-httpd-php .php # 对于 PHP 4 Action application/x-httpd-php "/php/php.exe" # 对于 PHP 5 Action application/x-httpd-php "/php/php-cgi.exe" # 指定 php.ini 所在目录 SetEnv PHPRC C:/php
服务器使用 CGI 方式进行部署可能存在几个公开的缺陷。请阅读 CGI 安全一章 以学习 如何抵御这些攻击。
如果想发布语法高亮的 php 文件,没有类似于模块方式下 PHP 那种方便的方法。如果选择了 CGI 方式运行 PHP,需要使用 highlight_file() 函数来进行语法高亮。创建一个 PHP 文件,加入下述代码即可:<?php highlight_file('some_php_script.php'); ?>。
frank at circuitdata dot dk (2008-09-19 08:43:55)
Entries to httpd.conf for PHP 5:
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
must appear BEFORE
LoadModule php5_module "C:/php/php5apache.dll"
This should NOT be added:
AddModule mod_php5.c
It makes no sense since AddModule means activation of a module compiled staticly into the Apache. We ofcourse do not have that!
david (2007-06-05 12:10:09)
Note that if you place php in the c:\php5 director your ScriptAlias line should read
ScriptAlias /php/ "c:/php5/"
This may be obvious to regular Apache users, but I changed all sorts of things around before realizing this was the issue. I thought
Action application/x-httpd-php "/php/php-cgi.exe"
was a path and was changing it to "/php5/php-cgi.exe" which didn't work.
BCarr (2006-01-20 13:35:16)
To Besta and 'j dot b..dot sk':
'Add Module mod_php4.c' or 'AddModule mod_php5.c' may or may not be necessary depending on your environment and version of Apache.
In my situation, this add module DID NOT work or it wasn't necessary. The LoadModule was enough to do the trick. I tried it with PHP4 on Apache 1.3.34 and Apache 2.0.
All in all, your notes have been helpful. Thanks.
j dot b at inmail dot sk (2005-09-27 12:42:47)
DO NOT FORGET to add "index.php" into
<IfModule mod_dir.c>
DirectoryIndex index.html
</IfModule>
so you get index.php processed;multiple values separate by space:
<IfModule mod_dir.c>
DirectoryIndex index.html index.php
</IfModule>
(2005-08-27 13:51:31)
On contrary to user "Besta"'s post
AddModule mod_php5.c
should be added to the addmodule section. I installed php5 and apache 1.3.3 and without the above line it is not recognizing the .php files
Besta (2005-08-07 02:16:33)
Do not add this line to apache http.conf. It does not work.
AddModule mod_php5.c
Also, remember to edit the system variables, edit the PATH and add the path to the php directory and restart windows.
psychosos at gmx dot at (2005-02-27 05:59:02)
Please note that the SetEnv PHPRC "directory/to/phpini/" only works when using PHP as CGI, but _not_ when you use the PHP Apache Module!