Windows 上的 httpd.conf:无法找到 API 模型结构"php8_module"



我正在尝试按照以下准则在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

似乎php8_module不被PowerShell识别。有什么想法吗?

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

正如在 PHP 8 中发现的那样,我们不应该像预期的那样使用php8_module,而应该只使用普通php_module

所以加载器行应该看起来像这样:

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

你会期望 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

您应该获得输出"语法确定"。现在您可以毫无错误地启动您的 apache 服务器。

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

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 相关的更完整答案的人。

为了解决我情况下的错误,我必须添加为

LoadModule php_module "c:/php/php8apache2_4.dll"

而不是

LoadModule php8_module "c:/php/php8apache2_4.dll"

我的工作环境详细信息..

  1. 视窗 10 64 位
  2. PHP 版本
  3. : PHP 8.0.19 64 位线程安全版本
  4. 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"
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"

它应该如下所示:

# 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"

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

#ServerName www.example.com:80

ServerName localhost

它奏效了

不要忘记@vmxes答案

来自 https://windows.php.net/download#php-8.0 您必须下载"线程安全"版本。否则你就没有"php8apache2_4.dll",你需要它,以便php8在XAMPP中与Apache一起工作。 只需下载此版本,您就有

相关内容

  • 没有找到相关文章

最新更新