skip to Main Content

I’m trying to install PHP, Apache and MySQL on Windows, following these guidelines. At some point, I am prompted to edit httpd.conf to point to my PHP installation. Both the apache directory and the php directory are under C:: C:Apache24 and C:php-8.0.0beta1-Win32-vs16-x64.

The relevant lines for my installation are:

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"

Unfortunately, these seem to break Apache, since even running httpd afterwards yields:

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

It seems that php8_module is not recognized by PowerShell. Any ideas?

8

Answers


  1. I had exactly the same problem. I found a solution here.

    As it turned out in PHP 8 we should not use php8_module as we would expect, but only plain php_module

    So the loader line should look like this:

    LoadModule php_module "c:/Program Files/PHP/php-8.0.0RC2/php8apache2_4.dll"
    
    Login or Signup to reply.
  2. It should look like below:

    # 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"
    
    Login or Signup to reply.
  3. You would expect that the Apache2 directive for PHP8 would intuitively be:

    LoadModule php8_module "path/to/PHP/php8apache2_4.dll"
    

    But rather you have to use:

    LoadModule php_module "path/to/PHP/php8apache2_4.dll"
    

    I find that strange but that’s how it is.

    If you now navigate to your Apache2bin directory (something like C:/Apache24/bin)
    and check your httpd.conf file for any syntax errors using:

    httpd -t
    

    You should get the output "Syntax OK". Now you can start your apache server without any errors.

    Login or Signup to reply.
  4. If you are just looking for the answer it is:

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

    If you’d like to read on, I am trying to help people with other issues that come with trying to install php, mysql and apache together.

    So normally for the PHP 8 version if you try to install it and try to connect it with MySQL and Apache it will not work which we already know. IF you didn’t know this, please go and uninstall PHP 8 and install Php 7.4 in your C directory.

    Now the line:

    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
    

    If you notice what the error actually is that of a syntax which is pretty confusing if you go letter by letter trying to fix the issue.
    It turns out it is more of a logical error than a syntax error.

    Now if you typed this in your config code:

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

    You are not wrong or far from the actual solution actually you are 99% correct with this above line.

    So if you notice the error line again it states it is unable to locate an API called php_module.
    So by default for PHP 8 you don’t need to change this line as it understands it, but for Php 7.4 you must add a 7 in front of php so it can locate the module.

    So the correct line of code to be placed in the config file is:

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

    thank you for patiently reading through this, I hope it helps anyone searching for a more whole answer in relation to trying to download php 7.4, mysql and apache together.

    Login or Signup to reply.
  5. I had the same problem but in my case it worked changing this line in the httpd.conf file from

    #ServerName www.example.com:80
    

    to

    ServerName localhost
    

    And it worked

    Not forgetting @vmxes answer

    Login or Signup to reply.
  6. LoadModule php[PHP_MAIN_VERSION]_module "path/to/PHP/php[PHP_MAIN_VERSION]apache2_4.dll"
    

    Example:

    LoadModule php7_module "C:/php7.4.27/php7apache2_4.dll"
    
    Login or Signup to reply.
  7. from https://windows.php.net/download#php-8.0
    you have to download the "Thread Safe" version. otherwise you have no "php8apache2_4.dll" and you need that so that php8 works with apache in XAMPP.
    just download this version and you have

    Login or Signup to reply.
  8. To resolve the error in my case I have to add as

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

    instead of

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

    My working environment details..

    1. Windows 10 64 Bit
    2. PHP Version: PHP 8.0.19 64 bit Thread safe version
    3. Apache version: httpd-2.4.53-win64-VS16

    In httpd.conf file: I have added below line of code on top.

    AddHandler application/x-httpd-php .php
    AddType application/x-httpd-php .php .html
    LoadModule php_module "c:/php/php8apache2_4.dll"
    PHPIniDir "c:/php"
    
    Login or Signup to reply.
Please signup or login to give your own answer.
Back To Top
Search