Windows 上的 httpd.conf:找不到 API 模型结构 `php8_module`

问题描述 投票:0回答:9

我正在尝试按照这些指南在 Windows 上安装 PHP、Apache 和 MySQL。有时,系统会提示我编辑 httpd.conf

 以指向我的 PHP 安装。 apache目录和php目录都在
C:\
下:
C:\Apache24
C:\php-8.0.0beta1-Win32-vs16-x64.

我的安装的相关行是:

PHPIniDir "C:/php-8.0.0beta1-Win32-vs16-x64" AddHandler application/x-httpd-php .php .phar LoadModule php8_module "C:/php-8.0.0beta1-Win32-vs16-x64/php8apache2_4.dll"
不幸的是,这些似乎破坏了 Apache,因为即使随后运行 

httpd

 也会产生:

httpd.exe: Syntax error on line 542 of C:/Apache24/conf/httpd.conf: Can't locate API module structure `php8_module' in file C:/php-8.0.0beta1-Win32-vs16-x64/php8apache2_4.dll: No error
PowerShell 似乎无法识别

php8_module

。有什么想法吗?

php windows apache httpconfiguration
9个回答
122
投票
我也遇到了完全相同的问题。我找到了解决方案

here

事实证明,在 PHP 8 中我们不应该像我们期望的那样使用

php8_module

,而只能使用普通的 
php_module

所以加载线应该是这样的:

LoadModule php_module "c:/Program Files/PHP/php-8.0.0RC2/php8apache2_4.dll"
    

29
投票
您可能会期望 PHP8 的 Apache2 指令直观地是:

LoadModule php8_module "path/to/PHP/php8apache2_4.dll"
但是你必须使用:

LoadModule php_module "path/to/PHP/php8apache2_4.dll"
我觉得很奇怪,但事实就是这样。

如果您现在导航到 Apache2bin 目录(例如 C:/Apache24/bin) 并使用以下命令检查您的 httpd.conf 文件是否有任何语法错误:

httpd -t
您应该得到输出“Syntax OK”。现在您可以启动您的 apache 服务器,不会出现任何错误。


24
投票
如果您只是寻找答案,那就是:

LoadModule php7_module "C:/Apache/modules/php7apache2_4.dll"
如果您想继续阅读,我正在努力帮助人们解决尝试同时安装 php、mysql 和 apache 时遇到的其他问题。

因此,通常对于 PHP 8 版本,如果您尝试安装它并尝试将其与 MySQL 和 Apache 连接,它将无法工作,这一点我们已经知道。

如果你不知道这一点,请去卸载 PHP 8 并在你的 C 目录中安装 Php 7.4。

现在线路:

httpd.exe: Syntax error on line 244 of C:/Apache/conf/httpd.conf: Can't locate API module structure `php_module' in file C:/Apache/modules/php7apache2_4.dll: No error
如果您注意到错误实际上是语法错误,那么如果您逐个字母地尝试解决问题,这会非常令人困惑。
事实证明,这更多的是逻辑错误而不是语法错误。

现在,如果您在配置代码中输入以下内容:

LoadModule php_module "C:/Apache/modules/php7apache2_4.dll"
你没有错,也没有远离实际的解决方案,实际上你上面这行的正确率是 99%。

因此,如果您再次注意到错误行,它表明无法找到名为

php_module

 的 API。
因此,默认情况下,对于 PHP 8,您不需要更改此行,因为它可以理解它,但对于 PHP 7.4,您必须在 php 前面添加 7,以便它可以找到该模块。

因此要放置在配置文件中的正确代码行是:

LoadModule php7_module "C:/Apache/modules/php7apache2_4.dll"
感谢您耐心阅读本文,我希望它可以帮助任何寻找有关尝试同时下载 php 7.4、mysql 和 apache 的更完整答案的人。


6
投票
要解决我的情况下的错误,我必须添加为

LoadModule php_module "c:/php/php8apache2_4.dll"
而不是

LoadModule php8_module "c:/php/php8apache2_4.dll"
我的工作环境详情..

    Windows 10 64 位
  1. PHP版本:PHP 8.0.19 64位线程安全版本
  2. Apache 版本:httpd-2.4.53-win64-VS16
在 httpd.conf 文件中:我在顶部添加了以下代码行。

AddHandler application/x-httpd-php .php AddType application/x-httpd-php .php .html LoadModule php_module "c:/php/php8apache2_4.dll" PHPIniDir "c:/php"
    

5
投票
LoadModule php[PHP_MAIN_VERSION]_module "path/to/PHP/php[PHP_MAIN_VERSION]apache2_4.dll"
示例:

LoadModule php7_module "C:/php7.4.27/php7apache2_4.dll"
    

2
投票
它应该如下所示:

# PHP8 module AddHandler application/x-httpd-php .php AddType application/x-httpd-php .php .html LoadModule php_module "c:/php/php8apache2_4.dll" PHPIniDir "c:/php"
    

0
投票
我遇到了同样的问题,但就我而言,它可以将 httpd.conf 文件中的这一行从

更改为

#ServerName www.example.com:80

ServerName localhost
而且成功了

不要忘记@vmxes 的回答



0
投票
我在这里遇到了同样的问题,所以我去了 http.conf 并将行: LoadModule php8_module "c:\PHP8\php8apache2_4.dll" 更改为 LoadModule php_module "c:\PHP8\php8apache2_4.dll"

只需删除 8 就可以了。至少对我来说它在这里有效。 希望这有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.