Apache 和PHP是创建交互式网站的流行方案而且成本很低在Windows中安装Apache 是一件轻而易举的事情但要使PHP 与Apache 配合无间地运行就需要一定的技巧
在PHP 手册的Windows安装小节没有解释如何让PHP与Apache 配合使用而有关Apache 安装的小节缺失了你需要的大量信息在网上公布的其他安装指南中也包含了不少错误使一些安装人员只好不断试验和犯错例如有些人甚至将PHP的DLL替换成其他PHP版本的DLLOK为了节省你的宝贵时间我们准备了这篇最权威的指南文章帮你扫除一切烦恼
使用正确版本的Windows
首先要说一说兼容性Apache 不能在Windows 上运行在Windows 上勉强能够运行但不能作为服务使用从版本开始PHP也不再支持Windows 所以你的Windows操作系统必须是Windows NT或者XP
Apache 源码还是二进制?
如果你有Visual C++ 或更高的版本或者安装了Microsoft Visual Studio那么虽然可以根据源码来生成Apache但请绝对不要这样做在Visual Studio IDE中Windows下的生成过程非常复杂即使从命令行编译也绝对不是一件易事所以除非你喜欢创建makefile否则最好获得一份Windows Installer二进制发行包也就是一个msi文件等你对Apache有了足够多的认识知道自己要进行哪些定制操作时才可考虑亲手生成(编译)Apache
如果已经安装好并正在运行老版本的Apache首先要停止它卸载它然后才能开始安装新服务器多个版本的Apache 不能共存
双击Apache msi文件同意许可协议后正确设置Network Domain和Server Name(如果不打算将Apache安装到远程计算机那么设置localhost就可以了)在Administrators Email Address区域输入你的电子邮件地址保持端口/服务选项单选钮的选中状态在下一个对话框中如果选择Typical安装可以快速地获得一个能实际工作的服务器环境
安装提示
建议将默认安装目录从C:\Program Files\Apache Group变成C:\Apache或者符合文件名格式的其他名称这样一来以后每次输入Apache安装路径时都不必为其添加引号
稍候片刻安装向导会告诉你Apache 安装成功接下来惟一要做的事情就是进行测试请打开浏览器并访问localhost这样应该看到默认的Apache 主页
然后可以删除主Web服务器目录中的所有示例文件它们默认位于C:\InstallDirectory\Apache\Apache\htdocs中如果有一个现成的主页l请把它拷贝到这里另外也可以马上创建一个空白主页对于未初始化的HTML以下代码就可以了
<html>
<head>title=default server page</head>
<body>Default server page</body>
</html>
让Apache 为PHP做好准备
从现在开始你需要较多地以人工方式进行安装不能简单地点击和选择几个选项了事尽快习惯它吧这才是Apache的方式你需要编辑文件来设置不同的配置选项如果操作不当你所做的修改就会妨碍Apache的正确加载如果设置引发错误那么错误可能被记录到Apache 错误日志中(默认为C:\InstallDir\Apache\Logs\Errorlog)但能够像这样进行记录的毕竟是少数大多数错误只会记录到Windows事件日志中(开始| 设置| 控制面板| 管理工具| 事件查看器)
令人遗憾的是在你对安装设置进行调试时Windows事件日志并不是一个方便的工具更好的做法是在命令行窗口中测试Apache服务器的加载这样能立即看到错误报告所以在完成了我即将讨论的配置修改后请打开一个命令行窗口切换到Apache的binary目录(C:\InstallDir\Apache\bin)在那里启动Apache
Apache配置文件是C:\Apache\Apache\Conf\nf可用任何文本编辑器来编辑查找DirectoryIndex定位到下面这一行
DirectoryIndex l lvar # indexphp
为了允许Apache处理PHP页要删除注释字符(#)变成
DirectoryIndex l lvar indexphp
还要允许在任何目录中使用htaccess文件所以请在配置文件中查找AllowOverride把这个设置从None改成All保存了所做的改动后可继续在文本编辑器中打开该文件因为等会儿安装PHP时要再次编辑这个文件
安装PHP
虽然可以下载PHP的源码但和Apache 一样最好直接使用二进制发行包Apache 可采取种方式来运行PHP程序通过一个CGI接口来运行(外部调用Phpexe)或者使用PHP的DLL文件在Apache的内部运行后一种方式的速度较快所以针对每个版本的PHP都会提供个Windows二进制发行包较小的是msi包它会安装CGI可执行程序Phpexe但其中拿掉了通过Apache DLL来运行PHP脚本所需的模块较大的zip包则包含了所有这些东西你可以从网站的Win区域下载它们文件下载完毕后把它解压到C:\Php(保留文件夹名称)除非你有绝对的把握请同时下载PHP手册它有多种语言的版本可供选择
配置Apache 来运行PHP
现在来到了最有趣的部分将Apache和PHP完美地配合起来首先请将C:\Php\Dlls目录中的所有DLL文件拷贝到Windows的System目录(%windir%\System)接着在Apache的配置文件(nf)中查找包含了大量AddType命令那个小节自己添加下面这一行
AddType application/x
将C:\Php\Phpinirecommended拷贝到Windows目录(%windir%)把它重命名为Phpini并用文本编辑器打开它编辑其中对doc_rootextension_dir和sessionsave_path进行设置的行使其和下面展示的一致注意要把InstallDir替换成你的Apache 的安装目录的名称
doc_root = c:\apache\apache\htdocs
extension_dir = c:\php\extensions
sessionsave_path = c:/temp
在sessionsave_path中使用正斜槓和反斜槓都是允许的PHP手册声称这些路径参数需要在最后添加一个反斜槓但这个说法是不正确的在PHP 中不需要这样做另外如果C:\Temp不存在请自己创建它
下一步是允许Apache将PHP程序作为模块来运行这要求你采取个步骤首先将C:\Php\Phptsdll拷贝到Windows的系统文件夹(%windir%\System)在nf中找到LoadModule小节自己添加下面这一行
LoadModule php_module c:/php/phpapachedll
如果你出于某种原因而需要在CGI模式中运行PHP程序(使用Phpexe)请将上面这一行变成注释并在nf中添加下面这些行
ScriptAlias /php/ c:/php/
Action application/xhttpdphp /php/phpexe
一切都搞定了吗?
保存所做的更改后你需要亲自去证明两点才能确保Apache /PHP 成为一对完美的搭档Apache能正常加载吗它能正确处理PHP页吗?
要知道Apache是否能够正常加载在你已经打开的命令行窗口中输入以下命令
apache –k start
另外如果Apache正在运行可用以下命令重新启动它
apache –k restart
从命令行启动Apache的好处在于如果出现一个错误Apache会立即报告它你可能遇到的最常见的问题在于Apache可能由于某种原因而无法加载Phpapachedll如果Apache报告了这个错误请按前面所述的步骤重新操作一遍确保一切都没有错误
要知道Apache是否能正确地处理PHP页请用你的文本编辑器创建一个简单的PHP页命名为Phptestphp其中只包含下面这一行
<? phpinfo(); ?>
将文件保存到主Web服务器目录(C:\InstallDirectory\Apache\Apache\Htdocs)用浏览器访问如果一切正常应该看到一个含有PHP徽标的网页其中包含大量设置和其他信息要知道PHP当前是通过CGI来运行还是在Apache内部运行可以检查一下环境变量orig_script_name如果PHP通过CGI来运行这个变量的值就是/Php/Phpexe如果Apache将PHP脚本作为模块来运行该变量的值应该是/Phptestphp
虽然在Windows上安装Apache 和PHP并不是一件容易的事情但也完全没必要采取摸着石头过河的做法通过本文的说明你应该可以快速搭建起这个史上最好的成本最低的Web开发环境