我正在尝试按照以下准则在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
似乎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"
我的工作环境详细信息..
- 视窗 10 64 位 PHP 版本
- : PHP 8.0.19 64 位线程安全版本
- 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一起工作。 只需下载此版本,您就有