php 读取 json 配置时,用 file_get_contents() 读取文件,再用带 json_throw_on_error 的 json_decode() 解码。分开处理读取失败、语法错误和业务字段不合法,才能定位问题在哪一层。
用脚本目录固定配置路径
把示例保存为 read-config.php,并在旁边建立 config.json。代码要求 PHP 8。
<?php $path = __DIR__ . '/config.json';
$raw = is_file($path) ? @file_get_contents($path) : false;
if ($raw === false) {
fwrite(STDERR, "无法读取 config.json\n");
exit(1);
}
try {
$config = json_decode($raw, true, 512, JSON_THROW_ON_ERROR);
} catch (JsonException $error) {
fwrite(STDERR, "JSON 解析失败:" . $error->getMessage() . PHP_EOL);
exit(2);
}

用 __DIR__ 定位文件,可以从不同目录运行脚本。错误信息不输出配置原文。
语法正确后还要检查字段
将下面的校验接在同一文件末尾。page_size 要求是 1 到 100 的整数。
$size = is_array($config) ? ($config['page_size'] ?? null) : null;
if (!is_int($size) || $size 100) {
fwrite(STDERR, "page_size 必须是 1 到 100 的整数\n");
exit(3);
}
echo "每页 {$size} 条\n";

字符串 "20" 和整数 20 都是合法 JSON,但这个配置约定只接受后者。
分别制造三类错误来验收
先用下面内容运行 php read-config.php,再分别测试文件缺失、JSON 尾逗号和字段类型错误。
{"page_size": 20}
正常应输出每页 20 条。缺文件、解析错误和字段错误的退出码分别为 1、2 和 3。
php免费学习视频:立即使用
踏上前端学习之旅,开启通往精通之路!从前端基础到项目实战,循序渐进,一步一个脚印,迈向巅峰!











