我又被 Apache 设置问题难住了。我正在使用运行 Windows 7 Professional 和 Service Pack 1 的 64 位系统。我从队友那里复制了可用的 php5 安装目录,并将必要的.dll
文件从 php5 安装文件夹(就像它们在队友的工作设置中一样)复制到我的windows/system32/
。Apache 服务器使用默认的 Apache 配置 ( httpd.conf
) 文件成功启动。我能够在浏览器中访问 localhost。但 php 代码没有解析。我注意到 Apache 配置文件中没有类似下面的行:-
# PHP5 module
LoadModule php5_module D:/php5/php5apache2_2.dll
如果我添加此行,Apache 服务器启动将失败。运行测试配置会出现以下错误 -
httpd.exe: Syntax error on line 60 of C:/Program Files (x86)/Apache Software Foundation/Apache2.2/conf/httpd.conf: Cannot load D:/php5/php5apache2_2.dll into server: The specified procedure could not be found.
但是php5apache2_2.dll
文件位于指定位置,并且我已向当前系统用户授予php5
安装目录的所有权限。同一行也出现在 apache 错误日志中。另一件事是,我不确定日志究竟何时写入日志文件。如果我打开日志文件进行读取,是否会没有生成日志条目?哈哈……因为我无法观察到生成条目时的模式。我看到有些日志条目生成了,有些没有。但目前这是另一个问题。
我之前在同一个系统的另一个硬盘上设置过 apache、php。我按照现在的步骤操作,成功设置了,尽管经过了很多费脑筋的事情,比如我上面写的日志文件条目混乱。我不记得之前是怎么修复的。但是,我尝试使用相同的 apache 配置文件(之前在旧硬盘上的设置中运行的配置文件 - 已备份),但仍然出现相同的错误。
更新
我读https://www.php.net/manual/en/install.windows.apache2.phpAddHandler application/x-httpd-php .php
并在之后立即添加LoadModule php5_module "D:/php5/php5apache2_2.dll"
。仍然没有成功。
我也读过这个博客其中提到了一些 VC6 和 VC9 二进制文件。我对它们不了解。我需要对此做些什么吗?
进一步更新
我从http://httpd.apache.org/download.cgi- “无加密的 Win32 二进制文件(无 mod_ssl)(MSI 安装程序)”选项。
答案1
很可能你已经不兼容的 Apache 构建。您还没有提到从哪里下载 Apache HTTPD + 您使用的 PHP 版本。
获取最新的 Apache 版本Apache Lounge 网站-- 他们的构建是用VC9而 apache.org 构建仍是 VC6。您需要 VC9 构建,因为这是现在官方 PHP 构建的编译方式(您可以在 PHP for Windows 网站上阅读简短说明 - 参见 #2 中的链接)。
得到线程安全PHP 的构建来自适用于 Windows 的 PHP(根据您的问题,您希望将其作为 Apache 模块运行)。如果您想将其作为 FastCGI 运行,则需要非线程安全构建。
禁用所有非违约php 扩展(直到您成功启动 Apache 并且 PHP 正常运行)。
如果有必要,请配置您的 PHP 和 Apache(到目前为止您提到的那些 Apache 配置行都可以)。
附言 “将必要的 .dll 文件从 php5 安装文件夹(就像它们在队友的工作设置中一样)复制到我的 windows/system32/”
您使用的是 x64 位版本的 Windows。
C:\windows\system32\
仅适用于 64 位进程/文件。对于您来说,Apache 和 PHP 是 x32,因此正确的位置应该是C:\Windows\SysWOW64
。没有真正的理由将这些文件复制到那里——您可以将您的 PHP 安装路径(
D:\php5\
)添加到 PATH 环境变量(将其放在前面),Windows 将自动找到所有文件(可能需要重新启动)——对我来说工作正常。
答案2
我修复了这个问题。实际上,原因是缺少一些必要的 dll 文件(不确定是哪个文件),而且我尝试在缺少大量 dll 文件的情况下进行修复。
我所做的是,我遵循了队友 1 的 apache 配置部分,然后从队友 2(使用 Windows px 的 32 位系统)复制了 php5 目录。我以为 php 5 文件夹会相同,但错了。当我获取队友 1 的 php 5 文件夹时,问题得到了解决。
我检查了一下,发现两个 php5 文件夹的内容有很大差异,主要是 dll 文件。一定是缺少必要的 dll 文件,因为我拿了队友 1 的正确 php5 文件夹后需要重启系统。
故事的道德启示 -
抄袭的时候别动脑子,从同一个地方抄:)
答案3
您不必将任何这些(如libeay32.dll
,ssleay32.dll
)文件复制到任何地方,只需通过将 php 安装目录添加到系统路径环境变量即可解决问题。