PHP致命错误:从源代码构建PHP 5.6后找不到类'mysqli'

时间:2014-10-10 22:19:43

标签: php mysql

我从源代码编译了php 5.6 并在运行时收到以下错误,因为找不到mysqli

PHP Fatal error:  Class 'mysqli' not found in

我使用以下配置编译

./configure \
--with-mysqli=/usr/bin/mysql_config\
--with-libdir=lib64 \
--prefix=/usr/local \
--with-layout=PHP \
--with-pear \
--enable-calendar \
--enable-bcmath \
--with-gmp \
--enable-exif \
--with-mcrypt \
--with-mhash \
--with-zlib \
--with-bz2 \
--enable-zip \
--enable-ftp \
--enable-mbstring \
--with-iconv \
--enable-intl \
--with-icu-dir=/usr \
--with-gettext \
--with-pspell \
--enable-sockets \
--with-openssl \
--with-curl \
--with-gd \
--enable-gd-native-ttf \
--with-jpeg-dir=/usr \
--with-png-dir=/usr \
--with-zlib-dir=/usr \
--with-xpm-dir=/usr \
--with-vpx-dir=/usr \
--with-freetype-dir=/usr \
--with-t1lib=/usr \
--with-libxml-dir=/usr \
--with-mysql=mysqlnd \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--enable-soap \
--with-xmlrpc \
--with-xsl \
--with-readline \
--enable-pcntl \
--enable-sysvshm \
--enable-sysvmsg \
--enable-shmop \

我在lib目录中找不到mysqli.so:

[root@ns507257 php]# cd /usr/lib64/php/modules/
[root@ns507257 modules]# ll
total 3300
-rwxr-xr-x 1 root root   74648 Sep 30 05:47 curl.so
-rwxr-xr-x 1 root root 2713352 Sep 30 05:47 fileinfo.so
-rwxr-xr-x 1 root root   44680 Sep 30 05:47 json.so
-rwxr-xr-x 1 root root  116296 Sep 30 05:47 pdo.so
-rwxr-xr-x 1 root root   29168 Sep 30 05:47 pdo_sqlite.so
-rwxr-xr-x 1 root root  271960 Sep 30 05:47 phar.so
-rwxr-xr-x 1 root root   51336 Sep 30 05:47 sqlite3.so
-rwxr-xr-x 1 root root   58384 Sep 30 05:47 zip.so

php code

class DBUtil{
  public static function get($query,$dbinfo){
    //print_r($dbinfo);
    $host=$dbinfo['host'];
    $username=$dbinfo['username'];
    $password=$dbinfo['password'];
    $db=$dbinfo['db'];
    $mysqli = new mysqli($host, $username, $password, $db);

    /* check connection */
    if ($mysqli->connect_errno) {
      printf("Connect failed: %s\n", $mysqli->connect_error);
      exit();
    }
    /* Select queries return a resultset */
    if ($result = $mysqli->query("$query")) {
      /* free result set */
      $result->close();
      return $result;
    }
  }
  }

此外,我的/usr/local/lib64/似乎是空的。

出了什么问题?

3 个答案:

答案 0 :(得分:2)

事实证明,之前的PHP安装并未彻底删除,这会干扰我的构建。

要纠正这个问题,我需要这样做:

yum remove php-common
./configure
make install

现在,它有效!

答案 1 :(得分:0)

--with-libdir=lib64 \
--prefix=/usr/local \

...意味着lib应该安装在/usr/local/lib64.php/modules中,而不是/ usr / lib64 / php / modules

答案 2 :(得分:0)

将PHP升级到5.6.15后,我的开发机器上出现了这个错误。 Phpinfo()会说mysqli已经加载了。

但是要解决这个问题,我必须设置" extension_dir"在php.ini中到扩展文件夹的完整路径。 将此设置保留为" ext"也行不通。