我知道这个问题在这里被多次询问,但我的情况有点不同,因为我编译了php5。
我使用--with-mysqli=mysqlnd
选项配置了php并输出了命令:
cat php.ini | grep extension
给了我以下结果。
extension_dir = "/usr/local/lib/php/extensions/no-debug-zts-20121212/"
extension=imap.so
extension=mysqli.so
extension=mysqlnd.so
extension=pdo_mysql.so
此外,使用
列出文件sudo ls -l /usr/local/lib/php/extensions/no-debug-zts-20121212/
给了我以下结果。
total 1312
-rwxr-xr-x 1 root root 302845 Mar 14 19:20 imap.so
-rwxr-xr-x 1 root root 127672 Mar 15 00:08 mysqli.so
-rwxr-xr-x 1 root root 196760 Mar 15 00:08 mysqlnd.so
-rwxr-xr-x 1 root root 47168 Mar 15 00:08 mysql.so
-rwxr-xr-x 1 root root 522240 Mar 14 12:57 opcache.so
-rwxr-xr-x 1 root root 26960 Mar 15 00:09 pdo_mysql.so
-rwxr-xr-x 1 root root 104808 Mar 15 00:09 pdo.so
有了这个配置,我仍遇到以下错误:
[Sat Mar 14 23:49:37.520219 2015] [:error] [pid 8142:tid
140418847074048] [client 127.0.0.1:34142] PHP Fatal error: Class
'mysqli' not found in /var/www/warmmail/db_fns.php on line 5
现在测试是否加载了mysqli我把以下代码放在我的一个中 登陆页面:
<?php
echo 'Loaded .ini file is : '.php_ini_loaded_file();
echo '<br /><br />Function sets supported in this install are:<br />';
$extensions = get_loaded_extensions();
foreach($extensions as $each_ext)
{
echo "$each_ext<br />";
echo '<ul>';
$ext_funcs=get_extension_funcs($each_ext);
foreach($ext_funcs as $func)
{
echo "<li>$func</li>";
}
echo '</ul>';
}
?>
我得到了以下输出(仅显示摘录,因为它是一个大清单)
o
o
o
posix_get_last_error
posix_errno
posix_strerror
posix_initgroups
Reflection
mysqlnd
shmop
shmop_open
shmop_read
shmop_close
shmop_size
shmop_write
shmop_delete
o
o
o
正如我们可以看到mysql本机驱动程序(mysqlnd)被加载但是mysqli扩展及其功能(**我正在寻找)**未加载。
修改1
php -i | grep -n mysqli
给出了以下结果。
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/local/lib/php/extensions/no-debug-zts-20121212/mysqli.so' - /usr/local/lib/php/extensions/no-debug-zts-20121212/mysqli.so: undefined symbol: core_globals in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/local/lib/php/extensions/no-debug-zts-20121212/mysqlnd.so' - /usr/local/lib/php/extensions/no-debug-zts-20121212/mysqlnd.so: undefined symbol: core_globals in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/local/lib/php/extensions/no-debug-zts-20121212/pdo_mysql.so' - /usr/local/lib/php/extensions/no-debug-zts-20121212/pdo_mysql.so: undefined symbol: core_globals in Unknown on line 0
我该怎么办才能启动并运行mysqli?
答案 0 :(得分:1)
最后我能够自己解决这个问题
最初我的配置脚本是:
sudo ./configure --with-apxs2=/usr/local/apache2/bin/apxs
--with-mysqli=/usr/bin/mysql_config --with-pdo-mysql=/usr
/bin/mysql_config --enable-embedded_mysqli --enable-embedded-
pdo-mysql --with-zlib --with-gd --with-mhash --with-mcrypt
--with-curl --with-openssl --with-zlib --with-jpeg-dir --with-png-dir
--with-pcre-regex --with-pdo-mysql --enable-calendar --enable-exif
--enable-ftp --enable-mbstring --enable-shmop --enable-soap --enable-
sockets --enable-wddx --enable-zip
libmysqlclient-dev 添加了 / usr / bin / 中的mysql_config Debian包而不是我编译的mysql。事实上,我编译的mysql中的 mysql_config 文件位于 / usr / local / mysql / bin / 文件夹中。
所以我按如下所示更改了配置脚本并重新编译了php:
sudo ./configure --with-apxs2=/usr/local/apache2/bin/apxs
--with-mysql=/usr/local/mysql --with-mysqli=/usr/local/mysql
/bin/mysql_config --with-pdo-mysql=/usr/local/mysql/bin/mysql_config
--enable-embedded_mysqli --enable-embedded-pdo-mysql --with-zlib
--with-gd --with-mhash --with-mcrypt --with-curl --with-openssl
--with-zlib --with-jpeg-dir --with-png-dir --with-pcre-regex --enable-
calendar --enable-exif --enable-ftp --enable-mbstring --enable-shmop
--enable-soap --enable-sockets --enable-wddx --enable-zip
这解决了这个问题。