Enable mysqli in my in-webserver copy of php

2019-02-21 20:23发布

问题:

As is discussed here: mysqli works when run directly but not when via js-ajax

I may need to enable mysqli in my webserver php copy. It is enabled in the command line already.

How do I figure out if mysqli is enabled in a specific php copy, and if it's not, how do I install it?

My webserver is running Ubuntu 14.04.2 LTS.

I have now tried having the following extensions in my php.ini file:

extension=mysqli.so
extension=pdo_mysql.so
extension=php_mysqli.so

I have tried running them all separately, restarted mysql and apache, ran sudo php5enmod mysqli and then I run the page again, but the same error keeps popping up in /var/log/apache/error.log:

PHP Fatal error:  Class 'mysqli' not found in /var/www/html/..

And nothing gets added to the sql table unless I run the insert.php from the server side.

When I have all three extension in the php.ini file I get the following errors are well:

Failed loading /usr/lib64/php/modules/ioncube_loader_lin.so:  /usr/lib64/php/modules/ioncube_loader_lin.so: cannot open shared object file: No such file or directory
Failed loading /usr/lib64/php/modules/ixed.lin:  /usr/lib64/php/modules/ixed.lin: cannot open shared object file: No such file or directory
Failed loading /usr/lib64/php/modules/ZendOptimizer.so:  /usr/lib64/php/modules/ZendOptimizer.so: cannot open shared object file: No such file or directory
Failed loading /usr/lib64/php/modules/opcache.so:  /usr/lib64/php/modules/opcache.so: cannot open shared object file: No such file or directory

回答1:

From your comments it appears your extension_dir was set to /usr/lib64/php/modules but this folder did not exist on your system.

On your system the mysqli.so module was actually found in /usr/lib/php5/20121212/mysqli.so

To resolve the issue, you can set the extension_dir to /usr/lib/php5/20121212 so that the extension=mysqli.so line is able to find the shared object.



回答2:

You need to recompile your PHP and add the code --enable-all to the end. (I think that command is right. If not the concept is) Your shared objects are not installed.



回答3:

You need open mysqli service from apache server and then restart apache server



回答4:

Follow this guide.

https://www.digitalocean.com/community/tutorials/how-to-install-linux-apache-mysql-php-lamp-stack-on-ubuntu-14-04.

Skip first step wich is about apache web srver. Note that configuration for php cli (command line interface) is in a different file from the configuration for the php that your webserver uses. If you need to configure php for apache, the default path is /etc/php5/apache2/php.ini on UBUNTU 14.02.

If you continue to experience issues with ioncude follow this link https://www.digitalocean.com/community/tutorials/how-to-install-ioncube-loader