Everything was ok before. Today I tried to start laragon apache and I got the following error :
httpd: Syntax error on line 546 of
C:/laragon/bin/apache/httpd-2.4.35-win64-VC15/conf/httpd.conf:
Syntax error on line 1 of
C:/laragon/etc/apache2/fcgid.conf: Cannot load
C:/laragon/etc/apache2/modules/mod_fcgid-2.3.9-Win32-VC14.so
into server: %1 is not a valid Win32 application.
I have tried to change PHP versions, but it didn't help.
What should I do to start apache withour this error?
The answer was given by one of Laragon's administrators
You need to use a PHP Thread Safe version. The PHP NTS (non thread safe) versions are NOT compatible with Laragon.
https://forum.laragon.org/topic/166/tutorial-how-to-add-another-php-version-php-7-4-php-8-0-updated/1
You must also make sure that the VC of both PHP & Apache are the same.
If you are finding when trying to switch from php7 to php8 on Laragon here is a quick fix goto C:\laragon\etc\apache2
open mod_php.conf on line 2 change php8_module to php_module
# This file is auto-generated, so please keep it intact.
LoadModule php8_module "C:/laragon/bin/php/php-8.0.6-Win32-vs16-x64/php8apache2_4.dll"
PHPIniDir "C:/laragon/bin/php/php-8.0.6-Win32-vs16-x64"
<IfModule mime_module>
AddType application/x-httpd-php .php
</IfModule>
change this above to
# This file is auto-generated, so please keep it intact.
LoadModule php_module "C:/laragon/bin/php/php-8.0.6-Win32-vs16-x64/php8apache2_4.dll"
PHPIniDir "C:/laragon/bin/php/php-8.0.6-Win32-vs16-x64"
<IfModule mime_module>
AddType application/x-httpd-php .php
</IfModule>
Related
I try to install php on a mac M1 monterey, but this simple code is not interpretated :
<?php phpinfo(); ?>
I installed php with brew
brew install php
brew link php
I signed the libphp module
codesign --sign "certificate" --force --keychain ~/Library/Keychains/ /opt/homebrew/Cellar/php/8.1.2/lib/httpd/modules/libphp.so
Should I use the dynamic link instead ?
/opt/homebrew/opt/php/lib/httpd/modules/libphp.so
Loading the module in the apache2.conf file
LoadModule php_module /opt/homebrew/Cellar/php/8.1.2/lib/httpd/modules/libphp.so "certificate"
enable php page to be view in the apache2.conf file
# DirectoryIndex: sets the file that Apache will serve if a directory
# is requested.
#
<IfModule dir_module>
DirectoryIndex index.php
</IfModule>
result of which php
/opt/homebrew/bin//php
Is the double slash normal here ?
I can access the index.php of my web directory but php is still not executed.
Thanks
As I mentioned in the comments you probably done most the steps but this guide I found has one last step it mentions for PHP. Here is the link:
https://wpbeaches.com/updating-to-php-versions-7-4-and-8-on-macos-12-monterey/
Also I found a lot of my issues went away when I started using homebrew Apache instead.
I am glad the guide was able to help you get it working.
For anyone else who is stuck, here is the relevant section from the guide:
PHP 8 and macOS Apache
One extra step is needed for PHP 8 and macOS bundled Apache:
sudo nano /etc/apache2/httpd.conf
Add the new PHP 8 and comment out the old one.
LoadModule php_module /usr/local/opt/php#8.0/lib/httpd/modules/libphp.so
Go to the end of the file and add:
<FilesMatch .php$>
SetHandler application/x-httpd-php
</FilesMatch>
Restart Apache
Sometimes php configs are added through "other" configs if you have a line as below at the end of your httpd.conf
Include /private/etc/apache2/other/*.conf
Check config files under /private/etc/apache2/other/ and make necessary changes. I had a file called +php-osx.conf in that folder I edited as following:
LoadModule php_module /usr/local/opt/php#8.0/lib/httpd/modules/libphp.so
<FilesMatch .php$>
SetHandler application/x-httpd-php
</FilesMatch>
<IfModule php_module>
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
<IfModule dir_module>
DirectoryIndex index.html index.php
</IfModule>
</IfModule>
On Windows 10 Pro, after downloading PHP 8, switching to it in Laragon (PHP > Version) and restarting Apache, I get the following error:
httpd: Syntax error on line 546 of
C:/laragon/bin/apache/httpd-2.4.35-win64-VC15/con...:
Syntax error on line 2 of
C:/laragon/etc/apache2/mod_php.conf: Can't locate
API module structure 'php8_module' in file
C:/laragon/bin/php/php-8.0.2-Win32-vs16-x64/php8a...:
No error
After a fair bit of head scratching, the fix was fairly simple - in file
C:/laragon/etc/apache2/mod_php.conf
I changed
LoadModule php8_module to LoadModule php_module
It seems Laragon fouls up the auto-configuration of PHP 8
GOTO
C:/laragon/etc/apache2/mod_php.conf
AND REPLACE THIS
#This file is auto-generated, so please keep it intact.
LoadModule php8_module "C:/laragon/bin/php/php-8.0.6-Win32-vs16-x64/php8apache2_4.dll"
PHPIniDir "C:/laragon/bin/php/php-8.0.6-Win32-vs16-x64"
<IfModule mime_module>
AddType application/x-httpd-php .php
</IfModule>
WITH THIS
#This file is auto-generated, so please keep it intact.
LoadModule php_module "C:/laragon/bin/php/php-8.0.6-Win32-vs16-x64/php8apache2_4.dll"
PHPIniDir "C:/laragon/bin/php/php-8.0.6-Win32-vs16-x64"
<IfModule mime_module>
AddType application/x-httpd-php .php
</IfModule>
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?
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"
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.
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.
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"
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..
Windows 10 64 Bit
PHP Version: PHP 8.0.19 64 bit Thread safe version
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"
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"
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
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
I am following this portuguese article to configure Apache and PHP:
How Install And Configure The Development Environment in PHP - Part 2.
I already set up the php.ini and httpd.conf files. Besides to php5apache2_4.dll is in the right directory, but when I restart the server show me the following error:
httpd.exe: Syntax error on line 531 of D:/Apache24/conf/httpd.conf:
Invalid LoadModule path \xe2\x80\xaa"D:/php-5.6.13/php5apache2_4.dll"
Httpd.conf:
LoadModule php5_module "D:/php-5.6.13/php5apache2_4.dll"
AddType application/x-httpd-php .php
PHPIniDir "D:/php-5.6.13/"
EDIT
I changed the Httpd.conf file.
LoadModule php5_module "../php-5.6.13/php5apache2_4.dll"
AddType application/x-httpd-php .php
PHPIniDir "../php-5.6.13/"
And now is returning me a new error:
httpd.exe: Syntax error on line 531 of D:/Apache24/conf/httpd.conf:
Cannot load ../php-5.6.13/php5apache2_4.dll into server: %1 n\xe3o
\xe9 um aplicativo Win32 v\xe1lido.
In English language: Not a valid Win32 application.
In console:
php -version
PHP 5.6.13 (cli) (built: Sep 3 2015 15:14:40)
Copyright (c) 1997-2015 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2015 Zend Technologies
httpd -version
Server version: Apache/2.4.16 (Win64)
Apache Lounge VC14 Server built: Jul 22 2015 13:24:19
I just had the same problem trying to configure php7, so for anyone else having trouble:
There may be a few issues. Check that your versions of php and Apache are bit-compatible (both 64-bit x64 or both 32-bit x86; note that when downloading 64-bit PHP from windows.php.net/download/, the zip file will be called php...Win32...x64).
Also check that they are both compiled with the same version of Visual Studio (e.g. VC14). This happened to be the problem here: www.apachelounge.com/viewtopic.php?t=6596
In my case, I had the problem paulsm4 referred to about quotes. I copied and pasted the code from a website and noticed that when I ran httpd -k start, my error was httpd: Syntax error on line 62 of C:/Apache24/conf/httpd.conf: Invalid LoadModule path \x93c:/php7/php7apache2_4.dll\x94. The \x93 and \x94 are the CP1252 encodings for fancy open and end quotes. Eliminating these or replacing them with regular quotes fixed the problem and Apache ran smoothly with PHP after that.
Another problem someone else ran into was trying to configure Apache with NTS (non-thread-safe) PHP.
php.net/manual/en/install.windows.apache2.php The PHP download website also makes this point.
Removing the double-quotes form the httpd_uwamp.conf file worked for me on both UnWamp and PHP distributions. (No spaces are in any of my path names)
For Example Change
LoadModule "{PHPMODULENAME} {PHPPATH}/{PHPAPACHE2FILE}" to LoadModule {PHPMODULENAME} {PHPPATH}/{PHPAPACHE2FILE}
Thanks to Giancarlo Abel Giulian for his post ;-)
You have to make sure that you are using compatible version PHP with apache. Such that if you are running apache 32 bit make sure you are using PHP 32 bit and the same applies for 64 BIT. For preliminary analysis do the following.
Open command prompt and navigate to your apache installation bin folder such as
cd "C:/Apache24/bin"
Then run the following command to see if syntax is OK:
httpd.exe -t
The response will tell you if the mentioned dll php5apache2_4.dll is missing in your PHP location. if this is the case then you have to download the specific compatible PHP version with apache. otherwise it will tell you that syntax is ok.
for more information please visit this link
https://danielarancibia.wordpress.com/2015/09/27/installing-apache-2-4-and-php-7-for-development-on-windows/
I was having the same problem:
Invalid LoadModule path \xe2\x80\x9cC:/WAMP/php/php5apache2_4.dll\xe2\x80\x9d.
Based on paulsm4 suggestion above, I deleted the quotes in the directive LoadModule php5_module and replaced with simple quotes:
LoadModule php5_module "C:/WAMP/php/php5apache2_4.dll"
This solved it for me.
I had a similar error du to a simple cut and paste error from an older httpd.conf file where I had
LoadModule php5_module ...
instead of
LoadModule php7_module ...
Hope this may help someone else Googling this error message.
Change
LoadModule php7_module "c:/php/php7apache2_4.dll"
to
LoadModule php7_module /php/php7apache2_4.dll
and
PHPIniDir "c:/php"
to
PHPIniDir /php
Well done.
Cannot load modules/php7apache2_4.dll into server: The specified module could not be found. This is a common problem while setting up apache and php environment into a local computer
I also faced the same issue: The best way to approach the problem would be to install the same VC level for the apache server and the php and also make sure that the same VC++ is also installed in the computer.
For me I tried with VC14 for apache24 and php and also installed VC++ 2015 edition which happens to be VC14
In my case, it was due to the type of PHP7 downloaded: Non Thread Safe
Just download the Thread Safe version and extract to C:\php7 (Default directory), then try starting Apache Service again.
Hope this help!!!
I had tough time to get rid of this error, eventually resolved after both ( Apache and PHP ) installed x86 version ( not 64 ).
Also avoided simple folder name i.e. Apache2.4 or php, instead using detailed name like php_7.1.21_vc14_x86_ts and Apache_2.4.34_vc14_x86 to catch mismatch by looking at folder name itself instead of keep getting weird error.
I can understand how does it feels to get that error. Well after hours of research what i found was just remove the double-quotes and you are good to go. There is no need to remove double quotes from all the three lines. Remove them from the line which is giving you error.
Before
PHPIniDir “C:/PHP”
AddHandler application/x-httpd-php .php
LoadModule php7_module "C:/PHP/php7apache2_4.dll"
After
PHPIniDir “C:/PHP”
AddHandler application/x-httpd-php .php
LoadModule php7_module C:/PHP/php7apache2_4.dll
It worked for me. I don't think the upper two lines will give you error until and unless you have installed the PHP in insanely wrong way.
to test it (if you dont know)
open cmd (no need to open as administrator but you can)
navigate to the bin folder into c:/apache/bin (or whatever your folder is)
type httpd -t
and it should show syntax OK
if it is not so you need to work on the line which it says have got an error.
All he best.
Pretty bad reply? i know as it is my first reply to any doubt.
I had the same error. The only thing I changed was php_module to php7_module
Before
PHPIniDir "c:/php"
LoadModule **php_module** "c:/php/php7apache2_4.dll"
AddType application/x-httpd-php .php
After
PHPIniDir "c:/php"
LoadModule **php7_module** "c:/php/php7apache2_4.dll"
AddType application/x-httpd-php .php
I had a friend configure my server for sqlite3 yesterday.
He went in through putty and used a command line to determine if it was already installed:
locate sqlite3
it came back that it was indeed located as this shows:
/usr/bin/sqlite3
/usr/lib64/libsqlite3.so.0
/usr/lib64/libsqlite3.so.0.8.6
/usr/lib64/apr-util-1/apr_dbd_sqlite3-1.so
/usr/lib64/apr-util-1/apr_dbd_sqlite3.so
/usr/share/man/man1/sqlite3.1.gz
/usr/share/rails/configs/databases/sqlite3.yml
So then he proceeded to explain how we had to configure the apache to recognize and load that module. So we went into the httpd/conf.d/ directory and vi edited the php_conf file by adding this line <<---THIS LINE & now the complete file looks like this:
# PHP is an HTML-embedded scripting language which attempts to make it
# easy for developers to write dynamically generated webpages.
#
<IfModule prefork.c>
LoadModule php5_module modules/libphp5.so
</IfModule>
<IfModule worker.c>
LoadModule php5_module modules/libphp5-zts.so
</IfModule>
LoadModule php5_module modules/pdo_sqlite.so<<---THIS LINE
#
# Cause the PHP interpreter to handle files with a .php extension.
#
AddHandler php5-script .php
AddType text/html .php
#
# Add index.php to the list of files that will be served as directory
# indexes.
We then saved that file (i just double checked). We then called /etc/init.d/httpd reload and then restart. We got Green OKs all around.
But I still get:
PHP Fatal error: Class 'SQLite3' not found
when calling this line in my php file:
$db = new SQLite3($sqlite_database);
Any ideas how else I could test to see what is wrong?