我正在尝试按照这些指南在 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
。有什么想法吗?
here。
事实证明,在 PHP 8 中我们不应该像我们期望的那样使用php8_module
,而只能使用普通的
php_module
所以加载线应该是这样的:
LoadModule php_module "c:/Program Files/PHP/php-8.0.0RC2/php8apache2_4.dll"
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 服务器,不会出现任何错误。
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"
我的工作环境详情..
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"
更改为
#ServerName www.example.com:80
到
ServerName localhost
而且成功了不要忘记@vmxes 的回答
https://windows.php.net/download#php-8.0 您必须下载“线程安全”版本。否则你没有“php8apache2_4.dll”,并且你需要它以便 php8 在 XAMPP 中与 apache 一起工作。 只需下载此版本即可
只需删除 8 就可以了。至少对我来说它在这里有效。 希望这有帮助。