Adding PostgreSQL support to already installed PHP - php

I have php-5.3.6 and postgresql installed in my Fedora 13. But it seems that postgresql support is not enabled in php. My phpinfo() page doesn't show any PostgreSQL section, neither pdo_pgsql section.
I checked /etc/php.ini, and it shows that PostgresSQL is enabled.
[root#localhost ~]# cat /etc/php.ini | grep ^pgsql
pgsql.allow_persistent = On
pgsql.auto_reset_persistent = Off
pgsql.max_persistent = -1
pgsql.max_links = -1
pgsql.ignore_notice = 0
pgsql.log_notice = 0
Is there any way I can add postgresql support to php without recompiling it from the source? Is there any other files I need to make some changes?

Run yum install php-pgsql php-pdo_pgsql to install the PHP Postgres package.

Here's what solved the issue for me (on Windows, using WAMPSERVER):
Uncomment extension=php_pgsql.dll and extension=php_pdo_pgsql.dll in php.ini
Restart all services in WAMPSERVER
Make sure that php_pgsql and php_pdo_pgsql are checked in the WAMPSERVER menu -> PHP -> PHP extensions
In httpd.conf add the line LoadFile "C:/Program Files/PostgreSQL/9.4/bin/libpq.dll" before the line LoadModule php5_module "c:/wamp/bin/php/php5.5.12/php5apache2_4.dll"
Restart all services again and check that the WAMPSERVER icon becomes green.
Source:
http://toolkt.com/site/install-postgresql-and-phppgadmin-in-windows-with-wamp/

I had a similar problem earlier on today on Windows. I couldn't access "Phppgadmin". Whenever I tried to access it I get this error: "Your PHP installation does not support PostgreSQL. You need to recompile PHP using the --with-pgsql configure option". So I did some search which got me here.
Anyway, I was able find a way around the problem using the instruction I found here as follows:
Browsed to the php.ini file found in C:\xampp\php\php.ini and opened it in text editor as an administrator
Uncommented the following by removing the semicolons prefexing; extension_dir="C:\xampp\php\ext", extension=php_pgsql.dll and extension=php_pgsql.dll
Saved the file and restarted Apache

Similar problem I got earlier on Windows. I couldn't able to access "Phppgadmin". Whenever I access phppgadmin getting error: "Your PHP installation does not support PostgreSQL. You need to recompile PHP using the --with-pgsql configure option".
Finally, got the solution.
You need to follow this path C:\xampp\php\php.ini and opened it in text editor as an administrator and remove the semicolons pre-fexing; extension_dir="C:\xampp\php\ext", extension=php_pgsql.dll and extension=php_pgsql.dll Saved the file and restarted Apache

uncomment extension=pgsql in php.ini file (for window xampp installation )

Related

Can't connect to Database through PHP built in server [duplicate]

I am doing a tutorial and am getting this error:
Fatal error: Class 'MySQLi' not found (LONG URL) on line 8
The code on line 8 is:
$mysqli = new MySQLi($db_server, $db_user, $db_pass, $db_name);
I saw online someone said to see if it was turned on in my phpinfo(), but there wasn't anything listed in there under for "mysqli".
Also, I am running PHP version 5.2.5
Sounds like you just need to install MySQLi.
If you think you've done that and still have a problem, please post your operating system and anything else that might help diagnose it further.
You can check if the mysqli libraries are present by executing this code:
if (!function_exists('mysqli_init') && !extension_loaded('mysqli')) {
echo 'We don\'t have mysqli!!!';
} else {
echo 'Phew we have it!';
}
If you are on Ubuntu, run:
sudo apt-get install php-mysqlnd
And don't forget to restart the php service after this (Apache or php-fpm depends on the setup).
If you're calling "new mysqli(..)" from within a class that is namespaced, you might see a similar error Fatal error: Class 'foo\bar\mysqli' not found in. The way to fix this is to explicitly set it to the root namespace with a preceding backslash like so:
<?php
$mysqli = new \MySQLi($db_server, $db_user, $db_pass, $db_name);
In addition to uncommenting the php_mysqli.dll extension in php.ini, also uncomment the extension_dir directive in php.ini and specify your location:
extension_dir = "C:\software\php\dist\ext"
This made it work for me.
If you are on Docker...
Inside php-container RUN:
#docker-php-ext-install mysqli
#apachectl restart
My OS is Ubuntu. I solved this problem by using:
sudo apt-get install php5-mysql
How to Enable mysqli in php.ini
Edit/uncomment by removing ';'(colon) the following config in php.ini:
1st (uncomment and add config):
include_path = "C:\php\includes"
2nd (uncomment):
extension_dir = "ext"
3rd (uncomment and edit config):
extension=C:/PHP/ext/php_mysql.dll
extension=C:/PHP/ext/php_mysqli.dll
Restart the IIS server
Make sure that mysql is running on the system.
How to load php.ini file
Rename any one of the file php.ini-production/php.ini-development to php.ini from C:\PHP(note now the extention will be ini i.e "php.ini").
After renaming to php.ini file restart server
See the changes in http://localhost/phpinfo.php
For anyone using docker, I ran into this issue, and resolved it by using my own Dockerfile instead of the php:fpm image:
FROM php:fpm
RUN docker-php-ext-install mysqli
Seems like problem with your installation.
Have you installed MySQLi?
Have you activated it in php.ini?
Restarted Apache and/or PHP-FPM?
http://www.php.net/manual/en/mysqli.installation.php
Open your PHP folder.
Find php.ini-development and open it.
Find ;extension=mysqli
delete the ; symbol
save file and change the file extension from php.ini-development to php.ini
Restart the server and test the code:
if (!function_exists('mysqli_init') && !extension_loaded('mysqli')) {
echo 'We don\'t have mysqli!!!';
} else {
echo 'mysqli is installed';
}
if it not working, change both extension_dir in php.ini from "ext" to "c:\php\ext"
and extension=mysqli to extension=php_mysqli.dll then test again
Remember to reset the server every time you test
The PHP zip includes most of the commonly used extensions (*.dll on windows such as php_mysqli.dll) under the \ext directory, however they are not enabled by default. You might be getting this Fatal Error when trying to use MySQLi:
( ! ) Fatal error: Uncaught Error: Class 'mysqli' not found in C:\myProject\ class.Database.php on line 24
To enable extensions, open php.ini (you might need to first copy php.ini-development as php.ini), and un-comment (or add) these two lines:
extension_dir = "ext"
And any particular extensions you are getting Fatal Errors for, i.e. for mysqli:
extension=mysqli
On a fresh install of PHP, remove ; before extension_dir in php.ini.
I thought I might help anybody with the same problem using Namesco servers.
I have been trying to fix this problem after moving a database from my local server on home pc to namesco. They would not assist they said it was a coding issue.
However, it was simple to fix from their CPANEl LINUX hosting
interface.
Click on php.
then click on php modules and from their list of preinstalled modules just click the box for mysqli.
Then click save. (No need to change code if it worked(s) on another server.)
Unfortunately, their support articles were a waste of time. After reading this I went to admin interface with a new determination.
Some distributions (such as Gentoo) support multiple installations of PHP, and you have to make sure you're using one with mysqli installed and enabled.
On Gentoo, I had installed a new PHP (with the mysqli USE flag enabled), but I needed to activate the new version of PHP (since the old one must have been missing mysqli):
# eselect php list apache2
[1] php5.3 *
[2] php5.5
# eselect php set apache2 2
You have to run `/etc/init.d/apache2 restart' for the changes to take effect
# /etc/init.d/apache2 restart
I checked all above and it didn't work for me,
There are some steps I found.
I used PHP Version 5.5.9-1ubuntu4.17 on Ubuntu 14.04
First check the folder
#ls /etc/php5/mods-available/
json.ini mcrypt.ini mysqli.ini mysql.ini mysqlnd.ini opcache.ini pdo.ini pdo_mysql.ini readline.ini xcache.ini
If it did not contain mysqli.ini, read other answer for installing it,
Open php.ini find extension_dir
In my case , I must set extension_dir = /usr/lib/php5/20121212
And restart apache2 : /ect/init.d/apache2 restart
on ubuntu:
sudo apt-get install php-mysql
sudo service apache2 restart
on Debian 10
apt install php-mysql
/etc/init.d/apache2 restart
I found a solution for this problem after a long analysing procedure.
After properly testing my php installation with the command line features I found out that the php is working well and could work with the mysql database. Btw. you can run code-files with php code with the command php -f filename.php
So I realized, it must something be wrong with the Apache.
I made a file with just the phpinfo() function inside.
Here I saw, that in the line
Loaded Configuration File
my config file was not loaded, instead there was mentioned (none).
Finally I found within the Apache configuration the entry
<IfModule php5_module>
PHPINIDir "C:/xampp/php"
</IfModule>
But I've installed the PHP 7 and so the Apache could not load the php.ini file because there was no entry for that.
I added
<IfModule php7_module>
PHPINIDir "C:/xampp/php"
</IfModule>
and after restart Apache all works well.
These code blocks above I found in my httpd-xampp.conf file. May it is somewhere else at your configuration.
In the same file I had changed before the settings for the php 7 as replacement for the php 5 version.
#
# PHP-Module setup
#
#LoadFile "C:/xampp/php/php5ts.dll"
#LoadModule php5_module "C:/xampp/php/php5apache2_4.dll"
LoadFile "C:/xampp/php/php7ts.dll"
LoadModule php7_module "C:/xampp/php/php7apache2_4.dll"
As you can see I have the xampp package installed but this problem was just on the Apache side.
install
phpXX-extension by PHP.
In my FreeBSD's case:
pkg install php74-extensions
I'm using xampp and my problem was fixed once i rename:
extension_dir = "ext"
to
extension_dir = "C:\xampp\php\ext"
PS: Don't forget to restart apache after making this change!
In php.ini :
extension_dir ="c:/wamp64/bin/php/php7.4.9/ext/"
Make sure the PHP version is correct.
All you have to do is go to the php.ini file and on line 926 (depending on version) delete #. It should look like this:
;extension=ldap
;extension=mbstring
;extension=exif
extension=mysqli
;extension=oci8_12c
;extension=odbc
Save the file and open console (cmd) as administrator. Go to the path Apache24 / bin and enter httpd -k restart. This command will restart your server. After that, refresh the page and everything should work.
When I tried my PHP web app it was giving me the same error.
By googling I found out the MySQL plugin for the PHP server was missing with my installation. I am using Ubuntu, so when I tried MySQL plugin for PHP I found out 2 are there,
php-mysql and php<version>-mysql
I issued command - php --version in my terminal, I was having php7.4,
again I issued apt install php7.4-mysql
It worked.
This issue can be also caused by the .htaccess file misconfiguration.

Class "mysqli" not found in ....db.driver.inc.php [duplicate]

I am doing a tutorial and am getting this error:
Fatal error: Class 'MySQLi' not found (LONG URL) on line 8
The code on line 8 is:
$mysqli = new MySQLi($db_server, $db_user, $db_pass, $db_name);
I saw online someone said to see if it was turned on in my phpinfo(), but there wasn't anything listed in there under for "mysqli".
Also, I am running PHP version 5.2.5
Sounds like you just need to install MySQLi.
If you think you've done that and still have a problem, please post your operating system and anything else that might help diagnose it further.
You can check if the mysqli libraries are present by executing this code:
if (!function_exists('mysqli_init') && !extension_loaded('mysqli')) {
echo 'We don\'t have mysqli!!!';
} else {
echo 'Phew we have it!';
}
If you are on Ubuntu, run:
sudo apt-get install php-mysqlnd
And don't forget to restart the php service after this (Apache or php-fpm depends on the setup).
If you're calling "new mysqli(..)" from within a class that is namespaced, you might see a similar error Fatal error: Class 'foo\bar\mysqli' not found in. The way to fix this is to explicitly set it to the root namespace with a preceding backslash like so:
<?php
$mysqli = new \MySQLi($db_server, $db_user, $db_pass, $db_name);
In addition to uncommenting the php_mysqli.dll extension in php.ini, also uncomment the extension_dir directive in php.ini and specify your location:
extension_dir = "C:\software\php\dist\ext"
This made it work for me.
If you are on Docker...
Inside php-container RUN:
#docker-php-ext-install mysqli
#apachectl restart
My OS is Ubuntu. I solved this problem by using:
sudo apt-get install php5-mysql
How to Enable mysqli in php.ini
Edit/uncomment by removing ';'(colon) the following config in php.ini:
1st (uncomment and add config):
include_path = "C:\php\includes"
2nd (uncomment):
extension_dir = "ext"
3rd (uncomment and edit config):
extension=C:/PHP/ext/php_mysql.dll
extension=C:/PHP/ext/php_mysqli.dll
Restart the IIS server
Make sure that mysql is running on the system.
How to load php.ini file
Rename any one of the file php.ini-production/php.ini-development to php.ini from C:\PHP(note now the extention will be ini i.e "php.ini").
After renaming to php.ini file restart server
See the changes in http://localhost/phpinfo.php
For anyone using docker, I ran into this issue, and resolved it by using my own Dockerfile instead of the php:fpm image:
FROM php:fpm
RUN docker-php-ext-install mysqli
Seems like problem with your installation.
Have you installed MySQLi?
Have you activated it in php.ini?
Restarted Apache and/or PHP-FPM?
http://www.php.net/manual/en/mysqli.installation.php
Open your PHP folder.
Find php.ini-development and open it.
Find ;extension=mysqli
delete the ; symbol
save file and change the file extension from php.ini-development to php.ini
Restart the server and test the code:
if (!function_exists('mysqli_init') && !extension_loaded('mysqli')) {
echo 'We don\'t have mysqli!!!';
} else {
echo 'mysqli is installed';
}
if it not working, change both extension_dir in php.ini from "ext" to "c:\php\ext"
and extension=mysqli to extension=php_mysqli.dll then test again
Remember to reset the server every time you test
The PHP zip includes most of the commonly used extensions (*.dll on windows such as php_mysqli.dll) under the \ext directory, however they are not enabled by default. You might be getting this Fatal Error when trying to use MySQLi:
( ! ) Fatal error: Uncaught Error: Class 'mysqli' not found in C:\myProject\ class.Database.php on line 24
To enable extensions, open php.ini (you might need to first copy php.ini-development as php.ini), and un-comment (or add) these two lines:
extension_dir = "ext"
And any particular extensions you are getting Fatal Errors for, i.e. for mysqli:
extension=mysqli
On a fresh install of PHP, remove ; before extension_dir in php.ini.
I thought I might help anybody with the same problem using Namesco servers.
I have been trying to fix this problem after moving a database from my local server on home pc to namesco. They would not assist they said it was a coding issue.
However, it was simple to fix from their CPANEl LINUX hosting
interface.
Click on php.
then click on php modules and from their list of preinstalled modules just click the box for mysqli.
Then click save. (No need to change code if it worked(s) on another server.)
Unfortunately, their support articles were a waste of time. After reading this I went to admin interface with a new determination.
Some distributions (such as Gentoo) support multiple installations of PHP, and you have to make sure you're using one with mysqli installed and enabled.
On Gentoo, I had installed a new PHP (with the mysqli USE flag enabled), but I needed to activate the new version of PHP (since the old one must have been missing mysqli):
# eselect php list apache2
[1] php5.3 *
[2] php5.5
# eselect php set apache2 2
You have to run `/etc/init.d/apache2 restart' for the changes to take effect
# /etc/init.d/apache2 restart
I checked all above and it didn't work for me,
There are some steps I found.
I used PHP Version 5.5.9-1ubuntu4.17 on Ubuntu 14.04
First check the folder
#ls /etc/php5/mods-available/
json.ini mcrypt.ini mysqli.ini mysql.ini mysqlnd.ini opcache.ini pdo.ini pdo_mysql.ini readline.ini xcache.ini
If it did not contain mysqli.ini, read other answer for installing it,
Open php.ini find extension_dir
In my case , I must set extension_dir = /usr/lib/php5/20121212
And restart apache2 : /ect/init.d/apache2 restart
on ubuntu:
sudo apt-get install php-mysql
sudo service apache2 restart
on Debian 10
apt install php-mysql
/etc/init.d/apache2 restart
I found a solution for this problem after a long analysing procedure.
After properly testing my php installation with the command line features I found out that the php is working well and could work with the mysql database. Btw. you can run code-files with php code with the command php -f filename.php
So I realized, it must something be wrong with the Apache.
I made a file with just the phpinfo() function inside.
Here I saw, that in the line
Loaded Configuration File
my config file was not loaded, instead there was mentioned (none).
Finally I found within the Apache configuration the entry
<IfModule php5_module>
PHPINIDir "C:/xampp/php"
</IfModule>
But I've installed the PHP 7 and so the Apache could not load the php.ini file because there was no entry for that.
I added
<IfModule php7_module>
PHPINIDir "C:/xampp/php"
</IfModule>
and after restart Apache all works well.
These code blocks above I found in my httpd-xampp.conf file. May it is somewhere else at your configuration.
In the same file I had changed before the settings for the php 7 as replacement for the php 5 version.
#
# PHP-Module setup
#
#LoadFile "C:/xampp/php/php5ts.dll"
#LoadModule php5_module "C:/xampp/php/php5apache2_4.dll"
LoadFile "C:/xampp/php/php7ts.dll"
LoadModule php7_module "C:/xampp/php/php7apache2_4.dll"
As you can see I have the xampp package installed but this problem was just on the Apache side.
install
phpXX-extension by PHP.
In my FreeBSD's case:
pkg install php74-extensions
I'm using xampp and my problem was fixed once i rename:
extension_dir = "ext"
to
extension_dir = "C:\xampp\php\ext"
PS: Don't forget to restart apache after making this change!
In php.ini :
extension_dir ="c:/wamp64/bin/php/php7.4.9/ext/"
Make sure the PHP version is correct.
All you have to do is go to the php.ini file and on line 926 (depending on version) delete #. It should look like this:
;extension=ldap
;extension=mbstring
;extension=exif
extension=mysqli
;extension=oci8_12c
;extension=odbc
Save the file and open console (cmd) as administrator. Go to the path Apache24 / bin and enter httpd -k restart. This command will restart your server. After that, refresh the page and everything should work.
When I tried my PHP web app it was giving me the same error.
By googling I found out the MySQL plugin for the PHP server was missing with my installation. I am using Ubuntu, so when I tried MySQL plugin for PHP I found out 2 are there,
php-mysql and php<version>-mysql
I issued command - php --version in my terminal, I was having php7.4,
again I issued apt install php7.4-mysql
It worked.
This issue can be also caused by the .htaccess file misconfiguration.

PHP8 MySQLi class cannot be found [duplicate]

I am doing a tutorial and am getting this error:
Fatal error: Class 'MySQLi' not found (LONG URL) on line 8
The code on line 8 is:
$mysqli = new MySQLi($db_server, $db_user, $db_pass, $db_name);
I saw online someone said to see if it was turned on in my phpinfo(), but there wasn't anything listed in there under for "mysqli".
Also, I am running PHP version 5.2.5
Sounds like you just need to install MySQLi.
If you think you've done that and still have a problem, please post your operating system and anything else that might help diagnose it further.
You can check if the mysqli libraries are present by executing this code:
if (!function_exists('mysqli_init') && !extension_loaded('mysqli')) {
echo 'We don\'t have mysqli!!!';
} else {
echo 'Phew we have it!';
}
If you are on Ubuntu, run:
sudo apt-get install php-mysqlnd
And don't forget to restart the php service after this (Apache or php-fpm depends on the setup).
If you're calling "new mysqli(..)" from within a class that is namespaced, you might see a similar error Fatal error: Class 'foo\bar\mysqli' not found in. The way to fix this is to explicitly set it to the root namespace with a preceding backslash like so:
<?php
$mysqli = new \MySQLi($db_server, $db_user, $db_pass, $db_name);
In addition to uncommenting the php_mysqli.dll extension in php.ini, also uncomment the extension_dir directive in php.ini and specify your location:
extension_dir = "C:\software\php\dist\ext"
This made it work for me.
If you are on Docker...
Inside php-container RUN:
#docker-php-ext-install mysqli
#apachectl restart
My OS is Ubuntu. I solved this problem by using:
sudo apt-get install php5-mysql
How to Enable mysqli in php.ini
Edit/uncomment by removing ';'(colon) the following config in php.ini:
1st (uncomment and add config):
include_path = "C:\php\includes"
2nd (uncomment):
extension_dir = "ext"
3rd (uncomment and edit config):
extension=C:/PHP/ext/php_mysql.dll
extension=C:/PHP/ext/php_mysqli.dll
Restart the IIS server
Make sure that mysql is running on the system.
How to load php.ini file
Rename any one of the file php.ini-production/php.ini-development to php.ini from C:\PHP(note now the extention will be ini i.e "php.ini").
After renaming to php.ini file restart server
See the changes in http://localhost/phpinfo.php
For anyone using docker, I ran into this issue, and resolved it by using my own Dockerfile instead of the php:fpm image:
FROM php:fpm
RUN docker-php-ext-install mysqli
Seems like problem with your installation.
Have you installed MySQLi?
Have you activated it in php.ini?
Restarted Apache and/or PHP-FPM?
http://www.php.net/manual/en/mysqli.installation.php
Open your PHP folder.
Find php.ini-development and open it.
Find ;extension=mysqli
delete the ; symbol
save file and change the file extension from php.ini-development to php.ini
Restart the server and test the code:
if (!function_exists('mysqli_init') && !extension_loaded('mysqli')) {
echo 'We don\'t have mysqli!!!';
} else {
echo 'mysqli is installed';
}
if it not working, change both extension_dir in php.ini from "ext" to "c:\php\ext"
and extension=mysqli to extension=php_mysqli.dll then test again
Remember to reset the server every time you test
The PHP zip includes most of the commonly used extensions (*.dll on windows such as php_mysqli.dll) under the \ext directory, however they are not enabled by default. You might be getting this Fatal Error when trying to use MySQLi:
( ! ) Fatal error: Uncaught Error: Class 'mysqli' not found in C:\myProject\ class.Database.php on line 24
To enable extensions, open php.ini (you might need to first copy php.ini-development as php.ini), and un-comment (or add) these two lines:
extension_dir = "ext"
And any particular extensions you are getting Fatal Errors for, i.e. for mysqli:
extension=mysqli
On a fresh install of PHP, remove ; before extension_dir in php.ini.
I thought I might help anybody with the same problem using Namesco servers.
I have been trying to fix this problem after moving a database from my local server on home pc to namesco. They would not assist they said it was a coding issue.
However, it was simple to fix from their CPANEl LINUX hosting
interface.
Click on php.
then click on php modules and from their list of preinstalled modules just click the box for mysqli.
Then click save. (No need to change code if it worked(s) on another server.)
Unfortunately, their support articles were a waste of time. After reading this I went to admin interface with a new determination.
Some distributions (such as Gentoo) support multiple installations of PHP, and you have to make sure you're using one with mysqli installed and enabled.
On Gentoo, I had installed a new PHP (with the mysqli USE flag enabled), but I needed to activate the new version of PHP (since the old one must have been missing mysqli):
# eselect php list apache2
[1] php5.3 *
[2] php5.5
# eselect php set apache2 2
You have to run `/etc/init.d/apache2 restart' for the changes to take effect
# /etc/init.d/apache2 restart
I checked all above and it didn't work for me,
There are some steps I found.
I used PHP Version 5.5.9-1ubuntu4.17 on Ubuntu 14.04
First check the folder
#ls /etc/php5/mods-available/
json.ini mcrypt.ini mysqli.ini mysql.ini mysqlnd.ini opcache.ini pdo.ini pdo_mysql.ini readline.ini xcache.ini
If it did not contain mysqli.ini, read other answer for installing it,
Open php.ini find extension_dir
In my case , I must set extension_dir = /usr/lib/php5/20121212
And restart apache2 : /ect/init.d/apache2 restart
on ubuntu:
sudo apt-get install php-mysql
sudo service apache2 restart
on Debian 10
apt install php-mysql
/etc/init.d/apache2 restart
I found a solution for this problem after a long analysing procedure.
After properly testing my php installation with the command line features I found out that the php is working well and could work with the mysql database. Btw. you can run code-files with php code with the command php -f filename.php
So I realized, it must something be wrong with the Apache.
I made a file with just the phpinfo() function inside.
Here I saw, that in the line
Loaded Configuration File
my config file was not loaded, instead there was mentioned (none).
Finally I found within the Apache configuration the entry
<IfModule php5_module>
PHPINIDir "C:/xampp/php"
</IfModule>
But I've installed the PHP 7 and so the Apache could not load the php.ini file because there was no entry for that.
I added
<IfModule php7_module>
PHPINIDir "C:/xampp/php"
</IfModule>
and after restart Apache all works well.
These code blocks above I found in my httpd-xampp.conf file. May it is somewhere else at your configuration.
In the same file I had changed before the settings for the php 7 as replacement for the php 5 version.
#
# PHP-Module setup
#
#LoadFile "C:/xampp/php/php5ts.dll"
#LoadModule php5_module "C:/xampp/php/php5apache2_4.dll"
LoadFile "C:/xampp/php/php7ts.dll"
LoadModule php7_module "C:/xampp/php/php7apache2_4.dll"
As you can see I have the xampp package installed but this problem was just on the Apache side.
install
phpXX-extension by PHP.
In my FreeBSD's case:
pkg install php74-extensions
I'm using xampp and my problem was fixed once i rename:
extension_dir = "ext"
to
extension_dir = "C:\xampp\php\ext"
PS: Don't forget to restart apache after making this change!
In php.ini :
extension_dir ="c:/wamp64/bin/php/php7.4.9/ext/"
Make sure the PHP version is correct.
All you have to do is go to the php.ini file and on line 926 (depending on version) delete #. It should look like this:
;extension=ldap
;extension=mbstring
;extension=exif
extension=mysqli
;extension=oci8_12c
;extension=odbc
Save the file and open console (cmd) as administrator. Go to the path Apache24 / bin and enter httpd -k restart. This command will restart your server. After that, refresh the page and everything should work.
When I tried my PHP web app it was giving me the same error.
By googling I found out the MySQL plugin for the PHP server was missing with my installation. I am using Ubuntu, so when I tried MySQL plugin for PHP I found out 2 are there,
php-mysql and php<version>-mysql
I issued command - php --version in my terminal, I was having php7.4,
again I issued apt install php7.4-mysql
It worked.
This issue can be also caused by the .htaccess file misconfiguration.

A white page appears when you press on 'Click here' on the bWAPP/install.php path [duplicate]

I am doing a tutorial and am getting this error:
Fatal error: Class 'MySQLi' not found (LONG URL) on line 8
The code on line 8 is:
$mysqli = new MySQLi($db_server, $db_user, $db_pass, $db_name);
I saw online someone said to see if it was turned on in my phpinfo(), but there wasn't anything listed in there under for "mysqli".
Also, I am running PHP version 5.2.5
Sounds like you just need to install MySQLi.
If you think you've done that and still have a problem, please post your operating system and anything else that might help diagnose it further.
You can check if the mysqli libraries are present by executing this code:
if (!function_exists('mysqli_init') && !extension_loaded('mysqli')) {
echo 'We don\'t have mysqli!!!';
} else {
echo 'Phew we have it!';
}
If you are on Ubuntu, run:
sudo apt-get install php-mysqlnd
And don't forget to restart the php service after this (Apache or php-fpm depends on the setup).
If you're calling "new mysqli(..)" from within a class that is namespaced, you might see a similar error Fatal error: Class 'foo\bar\mysqli' not found in. The way to fix this is to explicitly set it to the root namespace with a preceding backslash like so:
<?php
$mysqli = new \MySQLi($db_server, $db_user, $db_pass, $db_name);
In addition to uncommenting the php_mysqli.dll extension in php.ini, also uncomment the extension_dir directive in php.ini and specify your location:
extension_dir = "C:\software\php\dist\ext"
This made it work for me.
If you are on Docker...
Inside php-container RUN:
#docker-php-ext-install mysqli
#apachectl restart
My OS is Ubuntu. I solved this problem by using:
sudo apt-get install php5-mysql
How to Enable mysqli in php.ini
Edit/uncomment by removing ';'(colon) the following config in php.ini:
1st (uncomment and add config):
include_path = "C:\php\includes"
2nd (uncomment):
extension_dir = "ext"
3rd (uncomment and edit config):
extension=C:/PHP/ext/php_mysql.dll
extension=C:/PHP/ext/php_mysqli.dll
Restart the IIS server
Make sure that mysql is running on the system.
How to load php.ini file
Rename any one of the file php.ini-production/php.ini-development to php.ini from C:\PHP(note now the extention will be ini i.e "php.ini").
After renaming to php.ini file restart server
See the changes in http://localhost/phpinfo.php
For anyone using docker, I ran into this issue, and resolved it by using my own Dockerfile instead of the php:fpm image:
FROM php:fpm
RUN docker-php-ext-install mysqli
Seems like problem with your installation.
Have you installed MySQLi?
Have you activated it in php.ini?
Restarted Apache and/or PHP-FPM?
http://www.php.net/manual/en/mysqli.installation.php
Open your PHP folder.
Find php.ini-development and open it.
Find ;extension=mysqli
delete the ; symbol
save file and change the file extension from php.ini-development to php.ini
Restart the server and test the code:
if (!function_exists('mysqli_init') && !extension_loaded('mysqli')) {
echo 'We don\'t have mysqli!!!';
} else {
echo 'mysqli is installed';
}
if it not working, change both extension_dir in php.ini from "ext" to "c:\php\ext"
and extension=mysqli to extension=php_mysqli.dll then test again
Remember to reset the server every time you test
The PHP zip includes most of the commonly used extensions (*.dll on windows such as php_mysqli.dll) under the \ext directory, however they are not enabled by default. You might be getting this Fatal Error when trying to use MySQLi:
( ! ) Fatal error: Uncaught Error: Class 'mysqli' not found in C:\myProject\ class.Database.php on line 24
To enable extensions, open php.ini (you might need to first copy php.ini-development as php.ini), and un-comment (or add) these two lines:
extension_dir = "ext"
And any particular extensions you are getting Fatal Errors for, i.e. for mysqli:
extension=mysqli
On a fresh install of PHP, remove ; before extension_dir in php.ini.
I thought I might help anybody with the same problem using Namesco servers.
I have been trying to fix this problem after moving a database from my local server on home pc to namesco. They would not assist they said it was a coding issue.
However, it was simple to fix from their CPANEl LINUX hosting
interface.
Click on php.
then click on php modules and from their list of preinstalled modules just click the box for mysqli.
Then click save. (No need to change code if it worked(s) on another server.)
Unfortunately, their support articles were a waste of time. After reading this I went to admin interface with a new determination.
Some distributions (such as Gentoo) support multiple installations of PHP, and you have to make sure you're using one with mysqli installed and enabled.
On Gentoo, I had installed a new PHP (with the mysqli USE flag enabled), but I needed to activate the new version of PHP (since the old one must have been missing mysqli):
# eselect php list apache2
[1] php5.3 *
[2] php5.5
# eselect php set apache2 2
You have to run `/etc/init.d/apache2 restart' for the changes to take effect
# /etc/init.d/apache2 restart
I checked all above and it didn't work for me,
There are some steps I found.
I used PHP Version 5.5.9-1ubuntu4.17 on Ubuntu 14.04
First check the folder
#ls /etc/php5/mods-available/
json.ini mcrypt.ini mysqli.ini mysql.ini mysqlnd.ini opcache.ini pdo.ini pdo_mysql.ini readline.ini xcache.ini
If it did not contain mysqli.ini, read other answer for installing it,
Open php.ini find extension_dir
In my case , I must set extension_dir = /usr/lib/php5/20121212
And restart apache2 : /ect/init.d/apache2 restart
on ubuntu:
sudo apt-get install php-mysql
sudo service apache2 restart
on Debian 10
apt install php-mysql
/etc/init.d/apache2 restart
I found a solution for this problem after a long analysing procedure.
After properly testing my php installation with the command line features I found out that the php is working well and could work with the mysql database. Btw. you can run code-files with php code with the command php -f filename.php
So I realized, it must something be wrong with the Apache.
I made a file with just the phpinfo() function inside.
Here I saw, that in the line
Loaded Configuration File
my config file was not loaded, instead there was mentioned (none).
Finally I found within the Apache configuration the entry
<IfModule php5_module>
PHPINIDir "C:/xampp/php"
</IfModule>
But I've installed the PHP 7 and so the Apache could not load the php.ini file because there was no entry for that.
I added
<IfModule php7_module>
PHPINIDir "C:/xampp/php"
</IfModule>
and after restart Apache all works well.
These code blocks above I found in my httpd-xampp.conf file. May it is somewhere else at your configuration.
In the same file I had changed before the settings for the php 7 as replacement for the php 5 version.
#
# PHP-Module setup
#
#LoadFile "C:/xampp/php/php5ts.dll"
#LoadModule php5_module "C:/xampp/php/php5apache2_4.dll"
LoadFile "C:/xampp/php/php7ts.dll"
LoadModule php7_module "C:/xampp/php/php7apache2_4.dll"
As you can see I have the xampp package installed but this problem was just on the Apache side.
install
phpXX-extension by PHP.
In my FreeBSD's case:
pkg install php74-extensions
I'm using xampp and my problem was fixed once i rename:
extension_dir = "ext"
to
extension_dir = "C:\xampp\php\ext"
PS: Don't forget to restart apache after making this change!
In php.ini :
extension_dir ="c:/wamp64/bin/php/php7.4.9/ext/"
Make sure the PHP version is correct.
All you have to do is go to the php.ini file and on line 926 (depending on version) delete #. It should look like this:
;extension=ldap
;extension=mbstring
;extension=exif
extension=mysqli
;extension=oci8_12c
;extension=odbc
Save the file and open console (cmd) as administrator. Go to the path Apache24 / bin and enter httpd -k restart. This command will restart your server. After that, refresh the page and everything should work.
When I tried my PHP web app it was giving me the same error.
By googling I found out the MySQL plugin for the PHP server was missing with my installation. I am using Ubuntu, so when I tried MySQL plugin for PHP I found out 2 are there,
php-mysql and php<version>-mysql
I issued command - php --version in my terminal, I was having php7.4,
again I issued apt install php7.4-mysql
It worked.
This issue can be also caused by the .htaccess file misconfiguration.

PHP Fatal error when trying to access phpmyadmin mb_detect_encoding

Not sure what happened, but below is what the log is giving me when trying to access phpmyadmin, please help. Trying to debug a different problem and ran into this. Not really possible to revert back to when it was working.
PHP Fatal error: Call to undefined function mb_detect_encoding() in
/usr/share/php/gettext/gettext.inc on line 177
When trying to go the the site, I get this error, I think it's likely the two errors are related:
Database connection error (1): The MySQL adapter 'mysqli' is not available.
First error is caused by php because the extension mbstring is either not installed or not active.
The second error is output of phpMyAdmin/your site asking you to install / enable the mysqli extension.
To enable mbstring and mysqli edit your php.ini and add/uncomment the two lines with mbstring.so and mysqli.so on unix or mbstring.dll and mysqli.dll on windows
Unix /etc/(phpX/)php.ini
extension=mysqli.so
extension=mbstring.so
Windows PHP installation folder\etc\php.ini
extension=mysqli.dll
extension=mbstring.dll
Don't forget to restart your webserver after this.
EDIT:
User added he was using redhat in the comments so here's how you install extensions on all CentOS/Fedora/RedHat/Yum based linux distros
sudo yum install php-mysqli
sudo yum install php-mbstring
restart your werbserver
sudo /etc/init.d/httpd restart
you can verify your installation with a little php script in your document root.
This lists all settings, versions and active extensions you've installed for php
test.php
<?php
phpinfo();
After reading about the extension_dir = "ext" i added the line to php.ini but didnt work, then started to look apache error log and saw the PHP was in fact unable to find the dll's in the specified directory "ext". I commented the extension_dir line, restarted Apache and looked the error log again, saw that PHP was now looking the dll's in C:/PHP/ext (by default i guess), but since im using other folders, that's not the correct path, so i uncommented the extension_dir line and wrote this:
extension_dir = "C:/Apache24/PHP/ext"
In my configuration that is the correct path to dll's.
and of course, uncommented:
extension=php_mbstring.dll
extension=php_mysql.dll
extension=php_mysqli.dll
Restarted the Apache server and internet browser and now phpMyAdmin works with my mySQL login.
So, dll's incorrect path and dll's needed commented in php.ini were the problem.
Remember to restart Apache and internet browser after editing config files.
System spec:
Windows 7 HB 64bit
httpd-2.4.4-win32-ssl_0.9.8.zip
php-5.4.16-Win32-VC9-x86.zip
phpMyAdmin-4.0.4.1-all-languages.zip
mysql-installer-community-5.6.11.0.msi
Hope this help. Thx for your comments too.
in ubuntu 16.04 when i tried to connect to phpmyadmin a white blank paged appeared so i ran the above command and phpmyadmin works
sudo apt-get install php-mbstring php7.0-mbstring php-gettext
for mysql support install
sudo apt-get install php7.0-mysql
tested in ubuntu 16.04 with php 7 version
It looks like your PHP installation does not have the mbstring extension and the mysqli adapter extension installed.
Please check your phpinfo(); or run php -i | grep 'mbstring\|mysqli' in a terminal.
I had the same problem on my windows7- 32 bit:
1."PHP Fatal error: Call to undefined function mb_detect_encoding() in /usr/share/php/gettext/gettext.inc on line 177"
when i opened my php.ini file , "extension_dir" line looked like following :
extension_dir = "C:/wamp/bin/php/php5.4.16/ext/"
which i changed to :
extension_dir = "C:\wamp\bin\php\php5.4.16\ext\"
and it worked.
In php.ini, I had to change
extension_dir = "ext"
to
extension_dir = "C:/PHP/ext"
as my PHP was installed in C:\PHP. I had to use / instead of \, and then it worked.
Also uncomment mbstrings, mysqli and mysql extensions.
What helped me (using XAMPP on Windows) was to:
make sure that my path included the correct path for PHP (I had two PHP
installations, one under c:\php and the XAMPP installation in
c:\xampp\php which was the one I wanted to use)
check that the lines
extension_dir="C:\xampp\php\ext" extension=php_mbstring.dll extension=php_exif.dll ; Must be after mbstring as it depends on it were uncommented in the php.ini file (i.e. no ; at the beginning)
restart the Apache server
last but not least, clear the cache when reloading the page http://localhost/phpmyadmin/ (for instance with Ctrl-F5 in Chrome)
Recompile PHP with mbstring.
./configure --enable-http --with-apxs2 --with-mysql --with-gd
--with-curl --with-mbstring
make
make install
My guess would be to check that the mysqli extension is enabled in your PHP configuration. More info would be great (eg. OS, AMP stack, etc.).
Check in your php.ini configuration for mysqli and make sure there is no ';' in front of the extension. The one enabled on my setup is php_mysqli_libmysql.dll.
Try to install mysqli and pdo.
Put it in terminal:
./configure --with-mysql=/usr/bin/mysql_config \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd
I tried on Windows and I was getting same issue after enabling this in PHP installation folder\etc\php.ini:
extension=mysqli.dll
extension=mbstring.dl
You should also enable the following in the ini file:
extension_dir = "ext"
phpMyadmin is working now!
In windows 2008 Server.
i removed ";" in front of extension=php_mbstring.dll in php.ini file and it worked... i followed below link...
https://bugs.php.net/bug.php?id=64965
Some versions of windows do not come with libmysql.dll which is necessary to load the mysql and mysqli extensions. Check if it is available in C:/Windows/System32 (windows 7, 32 bits). If not, you can download it DLL-files.com and install it under C:/Windows/System32.
If this persists, check your apache log files and resort to a solution above which responds to the error logged by your server.
One options is:
disabled this extension_dir = "ext"
and the other is:
go to wamp icon and see php and the click on php error logs then from error log u can find exact error.
this error occurs only if paths are not properly set.
I had the same trouble, this is what worked for me.
You can click at the wampserver icon, then at the PHP error log.
Check if it says this:
Unable to load dynamic library 'c:/wamp/bin/php/php5.5.12/ext/php_ldap.dll'
If yes, then you can reload your version of PHP, by clicking at the wampserver icon, then PHP, then version, and then you click at your version.
Wait for everything to be online again, then try to access phpmyadmin.

Categories