【问题标题】:Unable to switch from PHP5 to PHP7 using Apache 2.4无法使用 Apache 2.4 从 PHP5 切换到 PHP7
【发布时间】:2016-05-19 08:56:32
【问题描述】:

我最近下载了适用于 Windows 的最新版 AppServ (Appserv8)。 它安装Apache 2.4MySQL 5.7 以及PHP5PHP7 的两个版本。安装后使用的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 跟踪其依赖关系。

标签: php apache


【解决方案1】:

在开始菜单(或 Win Key + S)上的 AppServ 文件夹上,您必须搜索 PHP 版本切换,它会请求管理员权限(如果您拒绝它,它将不起作用),然后它将显示一个 cmd 控制台请求你在Apache上设置的PHP版本,按7切换PHP 7或按5切换PHP5。

如果您这样做但它不起作用,您应该撤消您对 AppServ 文件所做的更改。

【讨论】:

    【解决方案2】:

    我在快乐的结局中遇到了同样的问题。我的解决方案:

    1. 安装https://www.microsoft.com/en-hk/download/details.aspx?id=40784
    2. 安装 appserv 后,您将看到“Visual C++ Redistributable”窗口,然后按“卸载”按钮。
    3. 您安装 appserv 并完成。

    Arrivederci e buona fortuna。

    【讨论】:

    • 感谢您的回答。我会尽快尝试
    猜你喜欢
    • 2020-03-09
    • 2019-07-05
    • 2013-11-07
    • 2018-07-20
    • 1970-01-01
    • 1970-01-01
    • 2014-10-30
    • 1970-01-01
    • 2019-04-04
    相关资源
    最近更新 更多