在我的 php 网络服务器副本中启用 mysqli

Enable mysqli in my in-webserver copy of php

正如这里所讨论的那样: mysqli works when run directly but not when via js-ajax

我可能需要在我的网络服务器 php 副本中启用 mysqli。 它已经在命令行中启用了。

如何确定 mysqli 是否在特定的 php 副本中启用, 如果不是,我该如何安装?

我的网络服务器是 运行ning Ubuntu 14.04.2 LTS。

我现在尝试在我的 php.ini 文件中添加以下扩展名:

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

我已经尝试 运行 将它们分开,重新启动 mysql 和 apache,运行 sudo php5enmod mysqli 然后我再次 运行 页面,但是/var/log/apache/error.log:

中不断出现相同的错误
PHP Fatal error:  Class 'mysqli' not found in /var/www/html/..

除非我从服务器端 运行 insert.php,否则不会向 sql table 添加任何内容。

当我在 php.ini 文件中包含所有三个扩展名时,我得到以下错误:

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

您需要重新编译 PHP 并将代码 --enable-all 添加到最后。 (我认为那个命令是正确的。如果不是这个概念是)你的共享对象没有安装。

您需要从apache服务器打开mysqli服务,然后重启apache服务器

遵循本指南。

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

跳过关于 apache 网络服务器的第一步。 请注意,php cli(命令行界面)的配置与您的网络服务器使用的 php 的配置位于不同的文件中。 如果需要为apache配置php,默认路径是/etc/php5/apache2/php.ini on UBUNTU 14.02.

如果您继续遇到 ioncude 问题,请遵循此 link https://www.digitalocean.com/community/tutorials/how-to-install-ioncube-loader

根据您的评论,您的 extension_dir 似乎已设置为 /usr/lib64/php/modules,但您的系统中不存在此文件夹。

在您的系统上 mysqli.so 模块实际上是在 /usr/lib/php5/20121212/mysqli.so

中找到的

要解决此问题,您可以将 extension_dir 设置为 /usr/lib/php5/20121212,以便 extension=mysqli.so 行能够找到共享对象。