我从源代码编译了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/
似乎是空的。
出了什么问题?
答案 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"也行不通。