Recently, one of our Customers who updated MySQL and rebuild PHP via custombuild complained about the DirectAdmin: Headers and client library minor version mismatch.
This error affected his website hosted on a DirectAdmin Control panel.
When this error happens, you will see the following error message:
[function.mysql-connect]: /Headers and client library minor version
mismatch/. /Headers:50157 Library:50511/
What is happening here is that PHP compiles with MySQL lower version, but it links a MySQL library of higher version family.
This is the major cause of this error.
The root reason for this error is that PHP separates itself from the MySQL client libraries.
Hence, what happens (mainly on older compiles of Linux) is that people will compile PHP against a given build of the MySQL Client (an irrelevant version of MySQL) and not upgrade (in CentOS this package is mysqlclientXX).
In addition, this allows the package maintainer to support lower versions of MySQL.
Though a messy way to perform the task, it is the only way given how PHP and MySQL use different licensing.
In order to solve this, initially, we have to upgrade PHP to a version that complies with MySQL API library version or revert back mysql client libraries to API header version.
To do so, perform a cleanup in custombuild and rebuild PHP:
# cd /usr/local/DirectAdmin/custombuild
# ./build clean
# ./build php n
The MySQLND solves the problem with the help of PHP’s own native driver (the ND), which does not rely on the MySQL Client.
It also complies with the version of PHP we use. This is a better solution all around. If for no other reason MySQLND is made to have PHP talk to MySQL.
We can install mysqlnd using the command:
$ sudo yum install php-mysqlnd