我正在尝试编写连接MySQL数据库的PHP。我的调试器告诉我找不到类mysqli
。但我的phpinfo()
在已解析的conf.d/mysqli.ini
列表中有.ini
。
要调试此代码,我使用的是Eclipse PDT Xdebug。为什么调试器无法找到'mysqli'??
注意:我不确定这是否相关,但这是PHP可执行文件的配置:
PHP executable: /usr/bin/php5
Additional .ini: /etc/php5/conf.d/xdebug.ini
以下是来自控制台的实际错误消息:
Fatal error: Class 'mysqli' not found in /var/www/RBDM_Project/WebContent/login.php on line 8
Call Stack:
0.0099 333880 1. {main}() /var/www/RBDM_Project/WebContent/login.php:0
代码的第8行:
$db = new mysqli("URL","user","password","db");
更新:我想我可能会输入一个截图形式phpinfo()
答案 0 :(得分:1)
这些问题/建议作为评论可能会更好,但作为Stack Overflow的新手,我无法发表评论。
您是否安装了多个版本的PHP?我只是模糊地熟悉Eclipse PDT,所以我不确定它是如何调用PHP的。但是如果您的系统上安装了多个版本,您可能需要检查对phpversion的调用输出,以确保正在执行正确版本的PHP。
你自己编译PHP了吗? phpinfo输出中的configure options行是否显示'--with-mysqli = mysqlnd'?它应该是因为您发布的屏幕截图显示启用了mysqli,但此时检查它不会有什么坏处。
您可能已经完成的最后一些建议,验证扩展所依赖的库以及您在php.ini中的配置。这是您可能已经看过的旧帖子,但它有一些详细信息: Fatal error: Class 'MySQLi' not found
答案 1 :(得分:1)
你基本上是正确的,事实证明,因为我在libapache2-mod-php5
之后安装了mysqli(我认为这就是它所谓的),我不得不重新编译libapache2-mod-php5
。出于某种原因,当我安装额外的php模块时没有发生。
然后我再次确定它应该由包管理器完成,或者我是否每次都需要自己完成。
长话短说我重新安装了libapache2-mod-php5
,我得到了理想的结果。