httpd.conf в Windows: не удается найти структуру модели API `php8_module`
Я пытаюсь установить PHP, Apache и MySQL в Windows, следуя этим рекомендациям. В какой-то момент мне предлагается отредактировать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. Есть идеи?
8 ответов
У меня была точно такая же проблема. Я нашел решение здесь.
Как выяснилось, в PHP 8 не следует использовать
php8_module
как и следовало ожидать, но просто
php_module
Итак, строка загрузчика должна выглядеть так:
LoadModule php_module "c:/Program Files/PHP/php-8.0.0RC2/php8apache2_4.dll"
Можно было бы ожидать, что директива Apache2 для PHP8 интуитивно будет выглядеть так:
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 без каких-либо ошибок.
Если вы просто ищете ответ, это:
Если вы хотите продолжить чтение, я пытаюсь помочь людям с другими проблемами, которые возникают при попытке установить php, mysql и apache вместе.
Так что обычно для версии PHP 8, если вы попытаетесь установить ее и попытаться соединить с MySQL и Apache, она не будет работать, о чем мы уже знаем. ЕСЛИ вы этого не знали, удалите PHP 8 и установите Php 7.4 в каталог C.
Теперь строка:
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% с этой строкой выше.
Поэтому, если вы снова заметили строку с ошибкой, в ней говорится, что невозможно найти API с именем
php_module
. Таким образом, по умолчанию для PHP 8 вам не нужно изменять эту строку в том виде, в котором он ее понимает, но для Php 7.4 вы должны добавить 7 перед php, чтобы он мог найти модуль.
Итак, правильная строка кода, которая должна быть помещена в файл конфигурации:
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"
Детали моей рабочей среды..
- Windows 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 вам необходимо загрузить версию «Thread Safe». в противном случае у вас нет «php8apache2_4.dll», и вам это нужно, чтобы php8 работал с apache в XAMPP. просто скачайте эту версию и у вас есть