laravel 10 安装时缺少 mbstring 扩展会导致自动加载、路由解析、blade 编译及中文 url 生成失败;需确认 php cli 模式下 php.ini 已启用 extension=mbstring,并通过 php -m | grep mbstring 或 php -r "var_dump(extension_loaded('mbstring'));" 验证生效。

Laravel 10 安装时提示缺少 mbstring 扩展,不是偶然报错,而是框架启动的硬性门槛——它在底层被大量调用,缺了就无法完成自动加载、路由解析、Blade 编译和中文 URL 生成等基础动作。
mbstring 是 Laravel 10 启动链上的关键依赖
它不只用来处理中文,Laravel 内部大量使用 mb_strlen()、mb_substr()、mb_strtolower() 等函数,例如:
- URL 生成器(
url()、route())依赖 mbstring 判断多字节字符边界 - Blade 模板编译时对注释、PHP 标签做多字节安全截取
- 配置缓存(
php artisan config:cache)和路由缓存(route:cache)需正确解析含中文或特殊符号的字符串 - Artisan 命令行输出、日志格式化也默认启用 mbstring 支持
常见误判:网页端有 ≠ 命令行有
很多人看到 phpinfo() 页面显示 mbstring 已启用,但 composer create-project 仍报错。这是因为:
- Web 服务器(如 Apache/Nginx)和 PHP CLI(命令行)可能加载不同的
php.ini - 运行
php --ini查看 CLI 实际加载的配置文件路径 - 打开该
php.ini,确认extension=mbstring这一行已取消注释(不是;extension=mbstring) - Windows 用户还需检查
extension_dir是否指向正确的ext目录,且php_mbstring.dll文件存在
不同系统启用 mbstring 的实操方式
Linux(Ubuntu/Debian,PHP 8.2):
sudo apt install php8.2-mbstring- 重启服务:
sudo systemctl restart php8.2-fpm或sudo systemctl restart apache2
macOS(Homebrew):
-
brew install php@8.2(新版会自动带全扩展) - 确保 shell 配置生效:
echo 'export PATH="/opt/homebrew/opt/php/bin:$PATH"' >> ~/.zshrc && source ~/.zshrc
Windows(XAMPP/WAMP):
- 打开 XAMPP 控制面板 → Config → PHP (php.ini) → 搜索
mbstring - 去掉
;extension=mbstring前的分号 - 保存后重启 Apache
验证是否真正生效
别只信“安装了”,要验证 CLI 模式下确实加载成功:
- 终端执行:
php -m | grep mbstring→ 应输出mbstring - 或运行:
php -r "var_dump(extension_loaded('mbstring'));"→ 返回bool(true) - 再试一次
composer create-project laravel/laravel:^10.0











