How to enable mysqlnd for php?
I have PHP installed and running (version: 5.3.17) and I want to switch to mysqlnd (in the phpinfo mysqlnd does not exist at all).
I read that in order to set it, you need to update the ./configure
command:
./configure --with-mysql=mysqlnd \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
When I tried installing it with yum install php-mysqlnd
I get an error:
---> Package php-mysqlnd.x86_64 0:5.3.17-1.26.amzn1 will be installed
--> Processing Conflict: php-mysql-5.3.17-1.26.amzn1.x86_64 conflicts php-mysqlnd
--> Finished Dependency Resolution
Error: php-mysql conflicts with php-mysqlnd
The ./configure
command is part of the compilation process from source code.
You can either compile from source or install via package manager. I guess in your case the package manager is preferable.
As the package manager complains, you can’t have both php-mysql
and php-mysqlnd
installed.
So you can
yum remove php-mysql
before
yum install php-mysqlnd
Then check for success via
php -m | grep mysqlnd
or
php -i | grep mysqlnd
yum swap php-mysql php-mysqlnd
yum install php-mysqlnd
is only available on CentALT and maybe remi repos. Webtatic also has some good php repos as well. It is NOT on the default ones (I was using CentOS).
I may be late with this but it could be of help to others. As already said elsewhere in the forum, if a call to a function like get_result complains that it is undefined, then php-mysqlnd need to be installed (this question). I realized that doing yum install (centos) will automatically reports that it wants to remove php-mysql and phpmyadmin; do not accept this as your phpmyadmin may not work after. Instead, use yum shell which will take the commands at once and gracefully handle the change over; do these in command line:
# yum shell
> remove php-mysql
> install php-mysqlnd
> run
> quit
Now you may have to restart both the mariadb (most likely) and the httpd services.