29

我正在尝试按照这些指南在 Windows 上安装 PHP、Apache 和 MySQL 。在某些时候,系统会提示我进行编辑httpd.conf以指向我的 PHP 安装。apache 目录和 php 目录都在C:\:C:\Apache24C:\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无法识别。有任何想法吗?

4

7 回答 7

72

我有完全相同的问题。我在这里找到了解决方案。

正如在 PHP 8 中所证明的那样,我们不应该php8_module像我们期望的那样使用,而只是简单地使用php_module

所以加载器行应该是这样的:

LoadModule php_module "c:/Program Files/PHP/php-8.0.0RC2/php8apache2_4.dll"
于 2020-10-26T14:35:42.357 回答
22

您会期望 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 服务器而不会出现任何错误。

于 2021-02-01T21:04:06.663 回答
17

如果你只是在寻找答案,那就是:

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. 所以默认情况下,对于 PHP 8,您不需要更改它所理解的这一行,但对于 PHP 7.4,您必须在 php 前面添加一个 7 以便它可以定位模块。

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

LoadModule php7_module "C:/Apache/modules/php7apache2_4.dll"

感谢您耐心阅读本文,我希望它可以帮助任何寻找与尝试一起下载 php 7.4、mysql 和 apache 相关的更完整答案的人。

于 2021-02-07T14:19:49.757 回答
1

它应该如下所示:

# 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"
于 2021-01-13T05:56:41.280 回答
1
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"
于 2021-12-17T10:06:27.780 回答
0

我有同样的问题,但在我的情况下,它可以改变 httpd.conf 文件中的这一行

#ServerName www.example.com:80

ServerName localhost

它奏效了

不要忘记@vmxes 答案

于 2021-07-02T05:13:30.997 回答
0

https://windows.php.net/download#php-8.0 你必须下载“线程安全”版本。否则你没有“php8apache2_4.dll”,你需要这样才能使 php8 在 XAMPP 中与 apache 一起工作。只需下载此版本即可

于 2022-01-11T10:10:14.380 回答