PHP与MySQL连接报错:mysqli类未找到问题求助
运行测试代码时,页面及Chrome控制台均显示如下错误:
Fatal error: Uncaught Error: Class "mysqli" not found in D:\Apache24\htdocs\mysqltest.php:10 Stack trace: #0 {main} thrown in D:\Apache24\htdocs\mysqltest.php on line 10
测试代码:
<?php error_reporting(E_ALL); ini_set('display_errors', '1'); $user = "root"; $pass = "1234"; $host = "localhost"; $dbdb = "mysql"; $conn = new mysqli($host, $user, $pass, $dbdb); if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); } echo "It works, Connected successfully"; ?>
已尝试修改php.ini、调整目录路径、切换为PDO、重装MySQL等方法,均未解决问题,请求协助排查。
1. 确认生效的php.ini文件
新建phpinfo.php文件,内容如下:
<?php phpinfo(); ?>
访问该文件,找到Loaded Configuration File项,确定当前PHP实际加载的php.ini路径(很多用户会修改错误的配置文件导致无效)。
2. 启用mysqli扩展
打开上述找到的php.ini文件,完成以下配置:
- 找到
extension=mysqli(Windows环境下可能是extension=php_mysqli.dll),去掉行首的分号;解除注释。 - 检查
extension_dir配置,确保指向PHP安装目录下的ext文件夹,例如:
(注意路径使用正斜杠extension_dir = "D:/PHP/ext"/或双反斜杠\\,避免单斜杠转义问题)
3. 确认扩展文件存在
前往PHP安装目录的ext文件夹,检查是否存在php_mysqli.dll(Windows)或mysqli.so(Linux)文件。如果缺失,说明PHP安装时未包含mysqli扩展,需重新安装PHP并勾选mysqli组件。
4. 重启Apache服务
修改php.ini后必须重启Apache,否则新配置不会生效。
5. 验证扩展加载状态
再次访问phpinfo.php,查找是否存在mysqli章节;或运行以下代码验证:
<?php var_dump(extension_loaded('mysqli')); ?>
返回bool(true)则表示扩展加载成功。
6. 检查Apache的PHP模块配置
打开Apache的httpd.conf文件,确认加载的PHP模块路径和版本匹配:
LoadModule php8_module "D:/PHP/php8apache2_4.dll" AddHandler application/x-httpd-php .php PHPIniDir "D:/PHP"
确保PHPIniDir指向PHP安装目录,让Apache加载正确的php.ini文件。
针对PDO也无法使用的情况
若切换PDO后仍报错,需同时启用PDO相关扩展:
在php.ini中解除以下行的注释:
extension=pdo_mysql extension=pdo
同样重启Apache后验证。
内容的提问来源于stack exchange,提问作者ho_ng113

