php扩展未启用通常因php.ini中extension=xxx被注释,需取消分号、确认extension_dir路径正确、重启web服务,并用phpinfo()或php -m验证是否加载成功。

PHP 文件中扩展未启用,通常是因为 php.ini 里的 extension=xxx 行被注释(前面有分号 ;),只需去掉分号并重启 Web 服务即可生效。
确认当前使用的 php.ini 文件位置
在命令行或 PHP 脚本中运行以下代码,查清正在加载的配置文件路径:
<?php phpinfo(); ?>
打开页面后搜索 Loaded Configuration File,记下完整路径(如 /etc/php/8.1/apache2/php.ini 或 C:\xampp\php\php.ini)。
编辑 php.ini 启用指定扩展
用文本编辑器(推荐 VS Code、Notepad++ 或 vim)打开上述路径的 php.ini 文件,查找目标扩展名(如 mysqli、pdo_mysql、curl、gd 等)。
找到类似以下被注释的行:
;extension=mysqli ;extension=pdo_mysql ;extension=gd
去掉每行开头的分号 ;,改为:
extension=mysqli extension=pdo_mysql extension=gd
注意:
- PHP 7.4+ 多数扩展无需写 .so 或 .dll 后缀,直接写扩展名即可;
- Windows 下若提示找不到 DLL,需确认 extension_dir 指向正确(如 extension_dir = "ext");
- Linux/macOS 下确保对应 .so 文件真实存在(如 /usr/lib/php/20220829/mysqli.so)。
验证扩展是否加载成功
保存 php.ini 后,必须重启 Web 服务器(Apache/Nginx)或 PHP-FPM:
- Apache(Linux/macOS):
sudo systemctl restart apache2或sudo apachectl restart - XAMPP/WAMP:点击控制面板中的 “Restart Apache”
- Nginx + PHP-FPM:
sudo systemctl restart php8.1-fpm nginx(版本号按实际调整) - 命令行 PHP(CLI):无需重启,但需确认 CLI 使用的是同一份
php.ini(可用php --ini查看)
再执行:
<?php var_dump(extension_loaded('mysqli'));
// 输出 bool(true) 表示已启用
?>或运行:
php -m | grep mysqli
终端输出 mysqli 即表示成功。
常见问题快速排查
-
修改了 php.ini 但没生效:确认修改的是
phpinfo()显示的“Loaded Configuration File”,不是其他备份或默认模板 -
报错 “Unable to load dynamic library”:检查
extension_dir路径是否正确,对应扩展文件是否存在且权限可读 -
Windows 下扩展名写法:旧版需写全名如
extension=php_mysqli.dll,新版推荐简写extension=mysqli -
多环境冲突:CLI 和 Web 可能使用不同
php.ini,分别用php --ini和phpinfo()核对
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











