必须启用mbstring、openssl、pdo(及对应驱动如pdo_mysql)、json、curl、ctype、dom共7个php扩展,缺一不可;它们分别支撑路由解析、https请求、数据库初始化、配置加载、调试工具、gii生成器等核心功能,缺失将导致白屏、class not found或启动失败。

安装 Yii2 前,必须确认 PHP 已启用若干核心扩展——不是“可有可无”,而是缺一不可。白屏、500 错误、Class not found、Composer 卡死,90% 都源于这些扩展没开全或没配对。
必须启用的 6 个 PHP 扩展
Yii2 启动阶段就会调用这些扩展的功能,一旦缺失,连入口文件都过不去:
-
mbstring:处理中文、emoji、URL 路由解析;缺失会直接报
Call to undefined function mb_strlen() - openssl:Composer 下载依赖、JWT 验证、HTTPS 请求(如微信接口)、密码哈希都依赖它
- pdo 和 pdo_mysql(或 pdo_pgsql 等):即使暂不连库,框架初始化也会加载 PDO 类,否则启动即崩
-
json:配置加载、日志序列化、API 返回都靠
json_encode/decode,禁用 JSON 的 PHP 编译版本无法运行 Yii2 - curl:虽非绝对强制,但调试工具(Debug Toolbar)、第三方 SDK(支付宝/微信)、HTTP 客户端均依赖它,建议默认开启
- ctype 和 dom:Gii 代码生成器、XML 配置解析、部分验证规则需要,XAMPP/MAMP 等集成环境常默认关闭
快速检查 CLI 与 Web 环境是否一致
很多人只查 php -v 和 php -m,却忽略 Web 服务器(Apache/Nginx)可能加载的是另一份 php.ini:
- 终端执行:
php --ini→ 查看 CLI 加载的配置路径 - 在网站根目录新建
info.php,内容为<?php phpinfo(); ?>,浏览器访问 → 查看 Loaded Configuration File 和 extension 列表 - 重点比对两处的
date.timezone、extension_dir、以及各扩展是否显示enabled - 若不一致,需分别编辑两个
php.ini文件,或统一指向同一份配置
Windows/macOS/XAMPP/phpEnv 下开启扩展实操
不同环境修改方式略有差异,但核心动作一致:改 php.ini + 重启服务:
-
Windows(XAMPP):控制面板 → Apache 行右侧 Config → PHP (php.ini) → 搜索
extension=,取消以下行前的分号:extension=mbstringextension=opensslextension=pdo_mysqlextension=jsonextension=ctypeextension=dom
确认extension_dir = "C:\xampp\php\ext"路径正确,保存后重启 Apache -
macOS(Homebrew PHP):通常位于
/opt/homebrew/etc/php/8.2/php.ini(路径随版本变化),同样取消上述 extension 行注释;若提示php_openssl.so找不到,需确认 Homebrew 安装的 OpenSSL 版本与 PHP 编译时链接一致 - phpEnv:控制面板 → PHP 设置 → 勾选对应扩展 → 点击“应用”,它会自动写入并重启 Apache,无需手动改 ini
验证是否真正生效
改完别急着装 Yii2,先做两步验证:
- 终端执行:
php -m | grep -E "mbstring|openssl|pdo|json|curl|ctype|dom"(macOS/Linux)或逐行运行php -m查找 - 浏览器打开
info.php,搜索关键词,确认每项状态为enabled,且无红色警告提示 - 若某扩展显示“not found”或路径报错,回到
php.ini检查extension_dir是否指向真实存在的ext/目录 - 仍失败?直接查看错误日志:
C:\xampp\apache\logs\error.log(Windows)或/Applications/XAMPP/xamppfiles/logs/error_log(macOS),搜索timezone、undefined function、failed to load等关键词
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











