Jas*_*son 22 php windows apache httpconfiguration
我正在尝试按照这些指南在 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"
Run Code Online (Sandbox Code Playgroud)
不幸的是,这些似乎破坏了 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
Run Code Online (Sandbox Code Playgroud)
php8_modulePowerShell似乎无法识别它。有任何想法吗?
Vmx*_*xes 55
我遇到了完全相同的问题。我在这里找到了解决方案。
事实证明,在 PHP 8 中我们不应该php8_module像我们期望的那样使用,而应该使用普通的php_module
所以加载器行应该是这样的:
LoadModule php_module "c:/Program Files/PHP/php-8.0.0RC2/php8apache2_4.dll"
Run Code Online (Sandbox Code Playgroud)
Bri*_*ito 14
您会期望 PHP8 的 Apache2 指令直观地是:
LoadModule php8_module "path/to/PHP/php8apache2_4.dll"
Run Code Online (Sandbox Code Playgroud)
但您必须使用:
LoadModule php_module "path/to/PHP/php8apache2_4.dll"
Run Code Online (Sandbox Code Playgroud)
我觉得这很奇怪,但事实就是这样。
如果您现在导航到您的 Apache2bin 目录(类似于 C:/Apache24/bin)并使用以下命令检查您的 httpd.conf 文件是否有任何语法错误:
httpd -t
Run Code Online (Sandbox Code Playgroud)
你应该得到输出“Syntax OK”。现在您可以毫无错误地启动您的 apache 服务器。
小智 8
如果你只是在寻找答案,那就是:
LoadModule php7_module "C:/Apache/modules/php7apache2_4.dll"
Run Code Online (Sandbox Code Playgroud)
如果您想继续阅读,我正在尝试帮助那些在尝试一起安装 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
Run Code Online (Sandbox Code Playgroud)
如果您注意到错误实际上是语法错误,如果您逐字逐句地尝试解决问题,这会非常令人困惑。事实证明,与其说是语法错误,不如说是逻辑错误。
现在,如果您在配置代码中输入:
LoadModule php_module "C:/Apache/modules/php7apache2_4.dll"
Run Code Online (Sandbox Code Playgroud)
您没有错或与实际解决方案相去甚远,实际上您对以上这条线的正确率为 99%。
因此,如果您再次注意到错误行,它表明无法找到名为php_module. 所以默认情况下,对于 PHP 8,您不需要更改它理解的这一行,但是对于 PHP 7.4,您必须在 php 前面添加一个 7 以便它可以定位模块。
所以要放在配置文件中的正确代码行是:
LoadModule php7_module "C:/Apache/modules/php7apache2_4.dll"
Run Code Online (Sandbox Code Playgroud)
感谢您耐心阅读本文,我希望它可以帮助任何人在尝试一起下载 php 7.4、mysql 和 apache 方面寻找更完整的答案。
要解决我的情况下的错误,我必须添加为
LoadModule php_module "c:/php/php8apache2_4.dll"
Run Code Online (Sandbox Code Playgroud)
代替
LoadModule php8_module "c:/php/php8apache2_4.dll"
Run Code Online (Sandbox Code Playgroud)
我的工作环境详情..
在 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"
Run Code Online (Sandbox Code Playgroud)
LoadModule php[PHP_MAIN_VERSION]_module "path/to/PHP/php[PHP_MAIN_VERSION]apache2_4.dll"
Run Code Online (Sandbox Code Playgroud)
例子:
LoadModule php7_module "C:/php7.4.27/php7apache2_4.dll"
Run Code Online (Sandbox Code Playgroud)