You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

PHP写入JSON文件功能失效,请求技术排查与解决

问题分析与解决方案

我帮你梳理下这段PHP代码里的几个关键问题,这应该就是它无法正常运行的原因:

  • json_decode使用逻辑错误:你写的echo json_decode('twitch.json');完全不对路——json_decode()需要接收JSON格式的字符串作为参数,而不是文件名。要查看保存后的JSON内容,得先用file_get_contents()把文件里的内容读出来,再传给json_decode。而且直接echo一个数组/对象的话,PHP只会输出Array或者Object,得用print_r()或var_dump()才能看到具体内容。
  • 缺少错误处理机制:file_put_contents()很可能因为权限不足、路径错误失败,但你没有判断它的返回值,出问题时根本没法定位原因。
  • 表单数据未做基础校验:如果用户提交空表单,生成的JSON会包含空值,最好先做基础的非空判断和过滤。

修正后的完整代码

<?php 
if (isset($_POST['submit'])) { 
    // 基础过滤表单数据,避免空值或无效内容
    $twitchArray = array( 
        "TwitchName" => isset($_POST['twitchName']) ? trim($_POST['twitchName']) : '',
        "TwitchHref" => isset($_POST['twitchHref']) ? trim($_POST['twitchHref']) : '',
        "TwitchDescription" => isset($_POST['twitchDescription']) ? trim($_POST['twitchDescription']) : ''
    ); 

    // 生成格式化的JSON,方便阅读
    $json = json_encode($twitchArray, JSON_PRETTY_PRINT); 
    $file = 'twitch.json'; 

    // 检查文件写入是否成功
    if (file_put_contents($file, $json) !== false) {
        // 读取并解码保存的JSON内容
        $savedData = json_decode(file_get_contents($file), true); // 加true转成关联数组
        echo "数据保存成功!<br>";
        print_r($savedData); // 输出保存的具体数据
    } else {
        echo "错误:无法写入文件,请检查文件所在目录的权限或路径是否正确!";
    }
} 
?>

<!-- 必须搭配对应的HTML表单,否则无法提交数据 -->
<form method="post">
    <input type="text" name="twitchName" placeholder="Twitch名称" required><br>
    <input type="url" name="twitchHref" placeholder="Twitch链接" required><br>
    <textarea name="twitchDescription" placeholder="频道描述"></textarea><br>
    <button type="submit" name="submit">保存数据</button>
</form>

额外注意事项

  • 确保twitch.json所在的目录有PHP写入权限(通常设置为755或775,具体根据服务器配置调整)。
  • 生产环境中建议对用户输入做更严格的校验(比如链接格式验证、字符长度限制等),避免垃圾数据或安全问题。

内容的提问来源于stack exchange,提问作者Radek Kmenta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:54:10