Windows 8上的Apache/PHP

4
我在Windows 8上使用Apache/PHP遇到麻烦。之前在XP上(包括MySQL)使用它们时没有问题。我从未使用过Windows 7。
安装Apache没有问题。一切正常,包括所有虚拟服务器。 安装PHP顺利,安装会将条目放入httpd.conf而不会出现错误。 然而,当我尝试安装PHP后加载Apache时,Apache无法加载。
当在httpd.conf中包含PHP条目时,Apache返回的错误让我感到困惑:
Syntax error on line 1029 of C:/Program Files/Apache Group/Apache2/conf/httpd.conf:
Cannot load C:/Program Files/PHP/php5apache2_2.dll into server: The specified module could not be found. 

这是需要翻译的内容:

这些行是:

#BEGIN PHP INSTALLER EDITS - REMOVE ONLY ON UNINSTALL
PHPIniDir "C:\Program Files\PHP\"
LoadModule php5_module "C:\Program Files\PHP\php5apache2_2.dll"
#END PHP INSTALLER EDITS - REMOVE ONLY ON UNINSTALL

(第 1029 行是 LoadModule 行)这里的 dll 文件位置肯定正确。该行语法由 PHP 插入。我已将其与我拥有的以前版本的 httpd.conf 的语法进行了比较,它似乎是正确的。我认为语法错误是一个误导性信息。

我尝试过:

  • 在 dll 位置中切换反斜杠和斜杠。
  • 将 PHP 添加到路径中。
  • 按顺序安装 Apache 和 PHP。
  • 检查 PHP 文件夹和单个文件的权限,以确保 SYSTEM 具有读取/执行权限。

注释掉 PHP 行后,Apache 可以正常加载。如果我注释掉 LoadModule 行并只留下 PHPIniDir 行,则仍然无法加载。Apache 似乎表现出无法看到 PHP 目录的情况,但我无法弄清楚原因。

Windows 事件日志上没有任何记录。使用最新版本的 PHP 和 Apache。我不知道下一步该尝试什么。请给予任何建议,谢谢。


尝试在路径中没有空格的位置(例如 C:\PHP)重新安装 PHP。 - Ry-
只是一个想法:如果你的Windows是64位的,你的PHP可能被安装在C:\Program Files (x86)文件夹而不是C:\Program Files,因此路径不匹配。 - Havelock
1
尝试安装到C:\PHP。结果相同。 - Simon Roberts
这是32位的。我检查了所有路径,相信它们都是正确的。 - Simon Roberts
Apache服务本身是否在_Local System_帐户下运行? - Salman A
它正在作为一个服务运行,所以我认为是这样的。 - Simon Roberts
5个回答

11

请从此链接下载并按照说明进行操作: http://www.apachelounge.com/download/

最新的下载版本(2.4)可以在Windows 8和Server 2012上使用。

我在Windows 8上下载并测试了以下内容: 每个zip文件都有包含说明的readme.txt或install.txt。

我的httpd.conf中添加/修改的行是:

LoadModule rewrite_module modules/mod_rewrite.so
LoadModule php5_module "C:/Apache24/php-5.4.8/php5apache2_4.dll"
LoadFile "C:/Apache24/php-5.4.8/php5ts.dll"
PHPIniDir "C:/Apache24/php-5.4.8"
<IfModule php5_module>
  <Location />
    AddType text/html .php
    AddHandler application/x-httpd-php .php
    #AddHandler application/x-httpd-php-source .phps
  </Location>
</IfModule>

我不知道php5ts.dll文件具体是做什么的,我猜测它与安全威胁有关,但当我在IE中进行请求时,它导致我的本地Apache变得无限快,并且在FF中快了约300%。感谢您提供httpd.conf配置! - Jeffrey

1

在ApacheLounge打包的dll文件的Readme.txt文件中提到了这一点,但在下载页面或文件名(与所有其他版本不同)中没有提到:

“仅适用于PHP 5.4 Thread Safe(TS),且仅适用于Apache 2.4 Win32 VC9或VC10”

这些dll仅适用于TS版本,因此如果您下载了其他版本,则基本上是无法使用的。TS php二进制文件为我解决了这个问题。

祝好运。


0

当我在Win 8上重新安装Apache和PHP时,遇到了类似的问题(尽管我更多地使用Linux)。与原帖相似,无论我在httpd.conf和php.ini中尝试做什么,Apache都无法启动或无法看到PHP。在花费了不合理的时间后,我决定下载PHP 5.3(5.3.27)-VC9 x86线程安全版(2013年7月10日21:56:58)安装程序[45.86MB]而不是之前使用的非线程安全版本。 .msi安装程序有所不同。线程安全版本的安装程序实际上包含所需的文件,如果您按照安装程序提示操作,它实际上会询问您是否应将php安装“链接”到Apache服务器。然后,您只需提供hhtpd.conf目录,一切都正常工作。这是我的建议 :)


0

假设这是您的开发环境,而非部署环境,为什么不从Apache Friends下载XAMPP呢?它应该是预配置的,而且您将在其他设置中部署。


那更像是一条评论,而不是一个真正的答案。 - Havelock
1
不,这是一个实际的解决方案。 没有理由追求在Windows上的“纯洁性”。 - tonino.j
我之前没有使用过xampp,但我会尝试一下。谢谢。 - Simon Roberts

-1

我认为问题出在空白的“Program Files”中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接