【发布时间】:2016-05-19 08:56:32
【问题描述】:
我最近下载了适用于 Windows 的最新版 AppServ (Appserv8)。
它安装Apache 2.4、MySQL 5.7 以及PHP5 和PHP7 的两个版本。安装后使用的PHP版本为5。
我尝试使用随安装提供的脚本“PHP 版本切换”切换版本,但似乎不起作用。
我尝试手动编辑Apache24 文件夹中的http.conf 文件,但没有结果。
通过这些行,Apache 以 PHP5 正常启动:
LoadModule php5_module C:/AppServ/php5/php5apache2_4.dll
PHPIniDir "C:/AppServ/php5/"
如果我编辑:
LoadModule php7_module C:/AppServ/php7/php7apache2_4.dll
PHPIniDir "C:/AppServ/php7/"
当我尝试启动 Apache 时,我收到以下错误:
httpd.exe: Syntax error on line 180 of C:/Appserv/Apache24/conf/httpd.conf: Cannot load C:/Appserv/php7/php7apache2_4.dll into server: Impossibile trovare il modulo specificato.
(部分错误是意大利语:无法找到指定的模块)
请注意,该 dll 位于路径中指定的文件夹中。我被这个错误困住了,我不知道我必须在哪里修改配置文件(如果这是问题所在)。
EDIT1: 我在某个地方找到了this discussion,作者在其中解释说,由于 Visual C++ 的依赖关系,DLL 无法读取。我检查了我的系统,从 Microsoft Visual C++ 可再发行组件的多个安装中清除了它,并尝试安装 x64 或 x86 版本。
使用x86版本,我遇到了以前的问题。 使用 x64 版本,我无法启动 Apache,因为缺少 dll:应该是因为 apache 是 x86 版本(我不确定)。
EDIT2:
正如@chugadie 所建议的那样,我尝试使用dependencywalker 来跟踪依赖关系。
我发现了几个前缀为API-MS-WIN-CRT 的丢失文件。
现在我正在尝试修复,但我有几个 x86 和 x64 的 dll 问题。我认为最好的方法是重新安装 x64 架构中的所有组件。
非常感谢任何帮助。
【问题讨论】:
-
我认为你应该仔细看看。该文件不得存在。注意dll的php7目录和php7前缀
-
文件存在并且在正确的文件夹中。我检查了好几次才问。
-
可能是 php7apache2_4.dll 具有您的系统不满足的依赖项。使用dependencywalker.com 跟踪其依赖关系。