升级PHP至7后mysqli_connect未定义问题求助(Windows10+XAMPP3.2.2)
mysqli_connect()未定义的问题 嘿,我之前升级PHP到7的时候也碰到过一模一样的问题,折腾了好一会儿才搞定,给你梳理几个关键的排查步骤,应该能解决你的问题:
先确认当前加载的php.ini是哪个
别光盯着PHP7文件夹里的php.ini,先写个简单的测试文件info.php,内容是:<?php phpinfo(); ?>运行后看页面最顶部的
Loaded Configuration File项,确保它指向的是你替换后的PHP7文件夹里的php.ini——很多时候系统会默认加载旧版本的配置文件,这就白改了。正确启用mysqli扩展
打开正确的php.ini文件,搜索extension=mysqli:- 如果前面有个分号
;,把分号删掉,变成extension=mysqli - 注意PHP7的写法不需要加
.dll后缀,别写成extension=php_mysqli.dll(虽然有些环境兼容,但标准写法是不带后缀的)
- 如果前面有个分号
检查extension_dir的路径是否正确
在php.ini里找到extension_dir这一行,确认它指向的是PHP7文件夹下的ext目录。如果是相对路径的话,应该是extension_dir = "ext";如果是绝对路径,要确保路径准确,比如extension_dir = "C:\xampp\php7\ext",路径里的斜杠用正斜杠或者双反斜杠都可以。必须重启Apache服务
改完配置一定要重启XAMPP里的Apache,不然新的配置根本不会生效。重启后再刷新info.php页面,搜索mysqli,看看有没有出现对应的模块信息,如果有就说明加载成功了。排查文件权限和完整性
去PHP7的ext目录里找到php_mysqli.dll,右键看属性,有没有被系统标记为“被阻止”(有些压缩包解压后的文件会有这个限制),有的话勾选“解除锁定”。另外确保XAMPP的Apache进程有读取这个文件和ext目录的权限。检查XAMPP的Apache配置
打开XAMPP里的httpd.conf文件,搜索PHPIniDir,确认它指向的是PHP7的文件夹,比如PHPIniDir "C:/xampp/php7";再搜索LoadModule php7_module,确保后面的路径是PHP7下的php7apache2_4.dll(不同PHP7小版本对应的apache模块文件名可能略有不同,要匹配你当前的PHP版本)
要是这些步骤都试过还是不行,你可以把phpinfo里关于mysqli的部分内容,还有php.ini里的extension相关配置贴出来,我再帮你看看哪里出问题了。
内容的提问来源于stack exchange,提问作者Matthias Neubert

