laravel 10 安装时 json 扩展缺失是硬性门槛,缺则 composer create-project 中断或 php artisan serve 启动失败;它被列为11个强制必需扩展之一,用于配置解析、api 响应、composer 元数据加载及 redis 序列化等核心环节。

Laravel 10 安装时提示 json 扩展缺失,不是偶然报错,而是硬性门槛——它被列为强制必需扩展,缺了就无法完成 composer create-project 或启动 php artisan serve。
这是因为 Laravel 核心在多个关键环节依赖 json 扩展:
- 配置文件(
.env解析后、config/*.php合并时)需 JSON 序列化/反序列化 - API 响应
response()->json()直接调用json_encode() - Composer 加载依赖元数据(如
vendor/composer/installed.json)时需解析 JSON - Redis 缓存驱动、队列任务序列化也底层依赖
json_encode/decode
即使你手动启用了 extension=json,仍可能提示缺失,常见真实原因如下:
✅ PHP CLI 和 Web SAPI 使用不同 php.ini
php -m查看的是 CLI 模式下的扩展,而laravel new或composer命令走 CLI;但如果你用浏览器访问却看到错误,可能是 Apache/Nginx 加载了另一份配置。运行php --ini确认 CLI 使用的php.ini路径,再检查该文件是否含extension=json(通常已默认启用,但某些精简版 PHP 包会禁用)。✅ 扩展已安装但未启用
Ubuntu/Debian 下:sudo apt install php8.1-json(注意版本号要和php -v一致)
CentOS/RHEL 下:sudo yum install php-json
Mac(Homebrew):brew install php@8.1 && brew link php@8.1✅ 服务未重启或配置未生效
修改php.ini后,CLI 不需要重启服务,但若你是在 Docker 或容器中运行,需重建镜像或重启容器;如果是 PHP-FPM + Nginx,需执行sudo systemctl restart php8.1-fpm nginx。-
✅ 验证是否真加载成功
创建一个test.php文件:<?php var_dump(extension_loaded('json'));运行
php test.php,输出bool(true)才算真正就位。
重点提醒:Laravel 10 要求 PHP ≥ 8.1,且 json 是与 mbstring、openssl、pdo 等并列的11个强制扩展之一,少一个就会中断安装。别跳过检查,也别靠“好像能跑”来判断——用 php -m | grep json 或 extension_loaded('json') 实锤确认。











