timbear 2025-04-25 16:58 采纳率: 100%
浏览 46
已结题

php 连接mysql数据库时报错:Fatal error: Class ‘mysqli’ not found in问题

系统win 10
php 8.4.6
apache 2.4.63
都是64位
mysql正常工作中

$conn = new mysqli("localhost", "root", "", "test");
报错致命错误:未捕获错误:在 D:\Apache24\htdocs\1.php:45 中未找到类“mysqli”堆栈跟踪:#0 {main} 在D:\Apache24\htdocs\1.php第45行抛出

ini里边做了以下设置:

;extension=exif      ; Must be after mbstring as it depends on it
**extension=mysqli **
;extension=php_mysqli.dll
;extension=odbc
;extension=openssl

; On windows:
extension_dir = "D:\php8\ext" 路径正确,系统没有提示找不到php_mysqli.dll

php -m 里有
libxml
mysqli
mysqlnd
pcre

php -i里有

MysqlI Support => enabled
Client API library version => mysqlnd 8.4.6
Active Persistent Links => 0
Inactive Persistent Links => 0
Active Links => 0

Directive => Local Value => Master Value
mysqli.allow_local_infile => Off => Off
mysqli.allow_persistent => On => On
mysqli.default_host => no value => no value
mysqli.default_port => 3306 => 3306
mysqli.default_pw => no value => no value
mysqli.default_socket => no value => no value
mysqli.default_user => no value => no value
mysqli.local_infile_directory => no value => no value
mysqli.max_links => Unlimited => Unlimited
mysqli.max_persistent => Unlimited => Unlimited
mysqli.rollback_on_cached_plink => Off => Off

跟网页phpinfo.php不太一样,网页的没有mysqli信息,只有mysqlnd,也没有php.ini路径信息,但是命令行里有。

有没有人帮忙看下?



  • 写回答

3条回答 默认 最新

  • 宝码香车 优质创作者: JavaScript技术领域 2025-04-25 17:14
    关注

    让【宝码香车】来帮你解答,本回答参考DeepSeek编写,并整理提供。
    如果还有疑问可以点击头像关注私信或评论。如果答案让您满意,请采纳、点赞、关注,非常感谢!

    PHP连接MySQL报错"Class 'mysqli' not found"解决方案

    根据您描述的情况,这是一个典型的PHP扩展加载问题。虽然您在命令行模式下能看到mysqli扩展已加载,但在Apache环境下却没有加载成功。以下是解决方案:

    问题原因分析

    1. 您可能使用了两个不同的php.ini文件:

      • 命令行模式使用的php.ini
      • Apache使用的php.ini
    2. 网页版phpinfo()没有显示mysqli信息,说明Apache没有正确加载mysqli扩展

    解决方案

    1. 确认正确的php.ini文件

    首先找到Apache实际使用的php.ini文件:

    <?php
    phpinfo();
    ?>
    

    在浏览器中访问这个脚本,查看"Loaded Configuration File"项显示的php.ini路径。

    2. 修改Apache使用的php.ini

    编辑Apache使用的php.ini文件:

    1. 确保以下行没有被注释(去掉前面的分号):

      extension=mysqli
      
    2. 确认extension_dir设置正确:

      extension_dir = "D:\php8\ext"
      

    3. 检查PHP模块是否加载

    在php.ini中确保以下模块也已启用(去掉分号):

    extension=php_mysql.dll
    extension=php_mysqli.dll
    

    4. 重启Apache服务

    修改后必须重启Apache:

    net stop Apache2.4
    net start Apache2.4
    

    5. 验证扩展是否加载

    再次访问phpinfo()页面,检查是否出现mysqli相关信息。

    其他可能的问题

    1. PHP和扩展的架构匹配:确保所有组件都是32位或64位一致
    2. DLL文件缺失:检查D:\php8\ext目录下是否有php_mysqli.dll文件
    3. 路径问题:确保Apache的httpd.conf中有正确的PHP模块加载指令,例如:
      LoadModule php_module "D:/php8/php8apache2_4.dll"
      PHPIniDir "D:/php8"
      

    补充检查

    您可以通过以下命令检查Apache错误日志,可能会有更详细的错误信息:

    type D:\Apache24\logs\error.log | find "PHP"
    

    希望这些步骤能帮助您解决问题!如果仍有问题,请提供phpinfo()页面的完整输出或Apache错误日志中的相关信息。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 5月6日
  • 已采纳回答 4月28日
  • 创建了问题 4月25日