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

Ansible无法执行PHP动态清单文件的问题求助

问题分析

你的PHP脚本输出的内容不符合纯JSON要求——末尾会额外多一个1,这是Ansible解析失败的直接原因。

原因是require_once在成功加载文件时会返回布尔值true,执行echo require_once "test.json"时,PHP会先输出test.json的内容,再输出true对应的字符串1,最终输出的是完整JSON + 末尾的1,破坏了JSON格式。

另外,用require_once加载纯JSON文件本身就不合适——PHP会尝试将其解析为PHP代码,大概率会触发语法错误,只是错误输出可能被混在了JSON内容里未被注意。

修复方案

修改PHP脚本,改用file_get_contents读取并输出纯JSON内容:

#!/usr/bin/env php
<?php

// 直接读取JSON文件内容并输出
echo file_get_contents("test.json");
验证步骤
  1. 执行./test.php,对比输出内容与test.json,确保完全一致,无任何多余字符
  2. 重新运行Ansible命令:ansible-inventory -i './test.php' --list,确认清单能正常解析
额外排查建议
  • 若后续需要动态生成JSON清单,确保脚本仅输出纯JSON内容,禁止添加任何调试信息、注释或多余的换行/空格
  • 用./test.php | jq验证JSON合法性,jq会直接提示格式错误
  • 确认脚本执行权限(当前-rwxrwx---权限满足要求,只要Ansible运行用户属于it-dept组)

内容的提问来源于stack exchange,提问作者William Bargent-Ball

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 19:37:18