TYPO3 6.2 -> PHP 5.3 -> MySQL issue - php

I am stuck at a problem about setup a old TYPO3 6.2 project. I am forced to use PHP 5.3 and I am not able to use MySQLi, TYPO3 throws an error:
1271492607:Database Error: PHP mysqli extension not loaded. This is a must have for TYPO3 CMS!
How can I enable MySQLi now?
Using Ubuntu 16.04, downloaded PHP 5.3 and the MySQL extension from ppa, here
I am thankful for any help

Is the php53-mod-mysql installed and also activated? Create an test.php with the content <?php php_info(): ?> to check if the mysqli module is loaded. Otherwise you should check your php.ini, or the /etc/php5/conf.d respective the /etc/php5/mods-available/ directory if the module is available.
You can also try to run the command php5enmod mysqli and after that restart your Apache (service apache2 restart) and try again.

Related

How to enable mysql on legacy PHP?

I have legacy software which cannot be upgraded and I require PHP 5.3 for depreciated functions like mysql_connect() and session_register(). Running Debian 9.5 and lighttpd (can use Apache/nginx if necessary)
PHP doesn't seem to have the mysql extension installed: Fatal error: Call to undefined function mysql_connect()
I downloaded and compiled PHP 5.3 and here's the output of phpinfo().
I have php5.6-mysql and php-mysql installed but perhaps it's not compatible or not enabled for 5.3? The installed mysql version is Ver 15.1 MariaDB
I'm at a loss on what else to try or what I can do, any suggestions would be appreciated
Try to download the php5-mysql package and include it in the loaded extensions
Here is a link to it in the debian repo...
https://packages.debian.org/es/sid/php5-mysql
The answer taken from #deceze was that php 5.3 does not come packaged with mysql and must be specified at compile time. ./configure --with-mysql=mysqlnd
See this for your specific installation: http://php.net/manual/en/mysql.installation.php

PHP Headers and client library minor version mismatch [duplicate]

In PHP I'm getting the following warning whenever I try to connect to a database (via mysql_connect)
Warning: mysql_connect(): Headers and client library minor version mismatch. Headers:50162 Library:50524
In my php -i output I have the following values listed under mysqli
Client API library version => 5.5.24
Client API header version => 5.1.62
I've tried updating php5-mysql and php but I'm already at the latest version of both of them. How do I go about updating the header version so I stop seeing this warning?
EDIT
My MySQL files should all be updated to be the latest version:
$ apt-get install mysql.*5.5
. . .
mysql-client-5.5 is already the newest version.
mysql-server-core-5.5 is already the newest version.
mysql-server-5.5 is already the newest version.
mysql-testsuite-5.5 is already the newest version.
mysql-source-5.5 is already the newest version.
Removing old versions
$ apt-get remove mysql.*5.1
. . .
Package handlersocket-mysql-5.1 is not installed, so not removed
Package mysql-cluster-client-5.1 is not installed, so not removed
Package mysql-cluster-server-5.1 is not installed, so not removed
Package mysql-client-5.1 is not installed, so not removed
Package mysql-client-core-5.1 is not installed, so not removed
Package mysql-server-5.1 is not installed, so not removed
Package mysql-server-core-5.1 is not installed, so not removed
Package mysql-source-5.1 is not installed, so not removed
I am using MariaDB and have a similar problem.
From MariaDB site, it is recommended to fix it by
Switch to using the mysqlnd driver in PHP (Recommended solution).
Recompile PHP with the MariaDB client libraries.
Use your original MySQL client library with the MariaDB.
My problem was fixed by using the mysqlnd driver in Ubuntu:
sudo apt-get install php5-mysqlnd
[update: extra information] Installing this driver also resolve PDO problem that returns integer value as a string. To keep the type as integer, after installing mysqlInd, do this
$db = new PDO('mysql:host='.$host.';dbname='.$db_name, $user, $pass,
array( PDO::ATTR_PERSISTENT => true));
$db->setAttribute(PDO::ATTR_EMULATE_PREPARES, false);
$db->setAttribute(PDO::ATTR_STRINGIFY_FETCHES, false);
For new MySQL 5.6 family you need to install php5-mysqlnd, not php5-mysql.
Remove this version of the mysql driver
sudo apt-get remove php5-mysql
And install this instead
sudo apt-get install php5-mysqlnd
Your PHP was compiled with MySQL 5.1 but now it is linking a mysql library of 5.5.X family.
You have to upgrade PHP to a version compiled with MySQL 5.5 or revert back mysql client libraries to 5.1.x.
The same works for MySQL:
sudo apt-get install php5-mysqlnd
I've read this thread trying to find the solution for MySQL, and I've also seen ken's answer, but I ignored the solution for MariaDB, wasting a few hours that way. It wasn't clear for me that the same may apply to MySQL. This post is just to spare you the few hours I lost.
The root reason for this error is that PHP separated itself from the MySQL Client libraries some time ago. So what's happening (mainly on older compiles of linux) is that people will compile PHP against a given build of the MySQL Client (meaning the version of MySQL installed is irrelevant) and not upgrade (in CentOS this package is listed as mysqlclientXX, where XX represents the package number). This also allows the package maintainer to support lower versions of MySQL. It's a messy way to do it, but it was the only way given how PHP and MySQL use different licensing.
MySQLND solves the problem by using PHP's own native driver (the ND), which no longer relies on MySQL Client. It's also compiled for the version of PHP you're using. This is a better solution all around, if for no other reason that MySQLND is made to have PHP talk to MySQL.
If you can't install MySQLND you can actually safely ignore this error for the most part. It's just more of an FYI notice than anything. It just sounds scary.
My hosting company told me to fix this by deactivating "mysqli" and activating "nd_mysqli" in the php extensions.
The error is gone, but I don't have the knowledge to understand if this is the right method to fix this.
To compile php from source with MySQL native driver (mysqlnd),
cd /php/source/path
./configure <other-options> --with-mysql --with-mysqli --with-pdo-mysql
make clean # required if there was a previous make, which could cause various errors during make
make
make install
From /php/source/path/configure --help.
--with-mysql=DIR Include MySQL support. DIR is the MySQL base
directory, if no DIR is passed or the value is
mysqlnd the MySQL native driver will be used
--with-mysqli=FILE Include MySQLi support. FILE is the path
to mysql_config. If no value or mysqlnd is passed
as FILE, the MySQL native driver will be used
--with-pdo-mysql=DIR PDO: MySQL support. DIR is the MySQL base directory
If no value or mysqlnd is passed as DIR, the
MySQL native driver will be used
One or more PHP MySQL extensions can be included by using these options.
If a value is not passed to these options, or if the value is mysqlnd, MySQL native driver will be used.
I got same php warring in my wordpress site...
Err: Warning: mysql_connect(): Headers and client library minor version mismatch. Headers:50547 Library:50628 in /home/lhu/public_html/innovacarrentalschennai.com/wp-includes/wp-db.php on line 1515
Cause: I updated wp 4.2 to 4.5 version (PHP and MySql mismatch )
I changed wp-db.php on line 1515
$this->dbh = mysql_connect( $this->dbhost, $this->dbuser, $this->dbpassword, $new_link, $client_flags );
to
if ( WP_DEBUG ) {
$this->dbh = mysql_connect( $this->dbhost, $this->dbuser, $this->dbpassword, $new_link, $client_flags );
} else {
$this->dbh = #mysql_connect( $this->dbhost, $this->dbuser, $this->dbpassword, $new_link, $client_flags );
}
Its got without warring err on my wordpress site
If u had access cpanel or whm for domain web hosting ...
In cPanel, Go to "Softwares and services" tab, >> and then click "Select PHP Version" >> set your desired version of php...
Eg.
Current PHP version:
PHP Version [5.2] ( list of 5.2, 5.3, 5.4, 5.5, 5.6 available php versions)
Warning: Changing php modules and php options via PHP Selector for native php version is impossible
I selected 5.6 php version, after that error cleared on my wordpress blog site...
Warning: mysqli::mysqli(): Headers and client library minor version mismatch.
Headers:50547 Library:100026
I solved the above error by just rebuilding my Apache:
cPanel Version 56.0 (build 25)
Apache Version 2.4.18
PHP Version 5.5.30
MySQL Version 10.0.26-MariaDB
For WHM and cPanel, some versions need to explicty set mysqli to build.
Using WHM, under CENTOS 6.9 xen pv [dc] v68.0.27, one needed to rebuild Apache/PHP by looking at all options and select mysqli to build. The default was to build the deprecated mysql. Now the depreciation messages are gone and one is ready for future MySQL upgrades.
I ran into the same issue on centos7. Removing php-mysql and installing php-mysqlnd fixed the problem. Thanks Carlos Buenosvinos Zamora for your suggestion.
Here are my commands on centos7 just in case this can be of help to anybody as most of the answers here are based on Debian/Ubuntu.
To find the installed php-mysql package
yum list installed | grep mysql
To remove the installed php-mysql package
yum remove php55w-mysql.x86_64
To install php-mysqlnd
yum install php-mysqlnd.x86_64
Works for MariaDB 10.6.4-MariaDB, php56w, on centos 7.7
yum remove php56w-mysqli
yum install php56w-mysqlnd
Changing PHP version from 5.6 to 5.5 Fixed it.
You have to go to control panel > CGI Script and change PHP version there.

Homestead Laravel -- Mcrypt PHP extension required

I have installed Homestead and I am trying to work on a Laravel project version 4.2 however I keep getting the following error:
Mcrypt PHP extension required.
I have already installed Mcypt installed on the server and I have enabled it into the PHP 7 ini file. This problem does not want to go away for some reason.
Any recommendations to what I can do in order to enable Mcrypt on my virtual box please?
Since php7.1 mcrypt is deprecated so you have to downgrade php to php7.0
or install multiple versions of php but don't forget to enable the right
version inside your http server config file
or you can use php built in sever like :
cd project_dir/
php7.0 -S localhost:8000

MongoDb Extension for Yii 2 throwing error of extension not installed

I'm trying to install Yii2 mongo extension, I have already installed the mongo php driver and it showing in phpinfo. Please refer the screenshot for error. I have tried with both mongo and mongodb drivers, none are working.
I have tried the composer command
composer require "mongodb/mongodb=^1.0.0
from
http://us1.php.net/manual/en/mongodb.tutorial.library.php
its still the same output.
Check if there is a second php.ini for CLI version - probably mongodb is not added there (or just commented out). php --ini in console should help you find it. Fix configuration, restart apache and it should be fine.
Mongo driver is deprecated, in place of that mongodb drivers are added for newer version of PHP. Try installing Mongodb driver.
Steps for installation
http://php.net/manual/en/set.mongodb.php
Try with Xamp, I had issue with wamp and mongodb in windows.
refer this link for procedure.

Installation OCI8 extension to MAMP not works

I followed a few steps from http://caseymorford.com to install the OCI8 extension. The only issue was that the install-path on success was different. So i copied the oci8.so file to the right folder.
After restarting Apache and running some php, i still get the message:
Call to undefined function oci_connect()
Is there some other way to download a complete > PHP5.4 version with a build in oci extension?

Categories