簡體   English   中英

Windows 上的 httpd.conf:找不到 API model 結構 `php8_module`

[英]httpd.conf on Windows: can't locate API model structure `php8_module`

我正在嘗試按照這些指南在 ZAEA23489CE3AA9B6403EBB28E0CDA 上安裝 PHP、Apache 和 MySQL,4 在某些時候,系統會提示我編輯httpd.conf以指向我的 PHP 安裝。 Both the apache directory and the php directory are under C:\ : C:\Apache24 and 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似乎無法識別 php8_module。 有任何想法嗎?

我有完全相同的問題。 我在這里找到了解決方案。

正如在 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

你應該得到 output “語法 OK”。 現在您可以啟動 apache 服務器而不會出現任何錯誤。

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

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

如果您想繼續閱讀,我正在嘗試幫助人們解決嘗試一起安裝 php、mysql 和 apache 時遇到的其他問題。

因此,通常對於 PHP 8 版本,如果您嘗試安裝它並嘗試將其與 MySQL 和 Apache 連接,我們已經知道它將無法工作。 如果您不知道這一點,請 go 並卸載 PHP 8 並將 Php 目錄 7.4 安裝到您的 ZE12671F8384DCA84D3 中

現在這一行:

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

如果您注意到錯誤實際上是語法錯誤,如果您按字母 go 嘗試解決該問題,則該語法非常令人困惑。 事實證明,這更像是一個邏輯錯誤而不是語法錯誤。

現在,如果您在配置代碼中鍵入:

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

您沒有錯或與實際解決方案相去甚遠,實際上您對上述行的正確率是 99%。

因此,如果您再次注意到錯誤行,則表明它無法找到名為 php_module 的php_module 因此,默認情況下,對於 PHP 8,您不需要按照它的理解更改此行,但對於 Php 7.4,您必須在 php 前面添加一個 7,以便它可以定位模塊。

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

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

感謝您耐心閱讀本文,我希望它可以幫助任何尋找與嘗試一起下載 php 7.4、mysql 和 apache 相關的完整答案的人。

它應該如下所示:

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

要解決我的錯誤,我必須添加為

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

代替

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

我的工作環境詳情..

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

我有同樣的問題,但在我的情況下,它可以改變 httpd.conf 文件中的這一行

#ServerName www.example.com:80

ServerName localhost

它奏效了

不要忘記@vmxes 答案

https://windows.php.net/download#php-8.0你必須下載“線程安全”版本。 否則你沒有“php8apache2_4.dll”,你需要這樣 php8 在 XAMPP 中與 apache 一起工作。 只需下載此版本即可

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM