我想触发以下命令:
aws route53 change-resource-record-sets --hosted-zone-id XXX
--change-batch '{ "Comment": "2018-06-19-11:31", "Changes":
[ { "Action": "CREATE", "ResourceRecordSet": { "Name": "example.com",
"Type": "TXT", "TTL": 60, "ResourceRecords":
[ { "Value": "\"something\"" } ] } } ] }'
当我在 bash 上触发它时它起作用,但当我在 PHP 中运行它时则不起作用:
$json = trim(shell_exec($cmd_aws_submit));
// or:
$json = trim(shell_exec("{$cmd_aws_submit}"));
AWS 预计该值 ("\"something\""
) 引用 TXT 记录。我试着这样引用它:
$value = "\\\"" . $textvalue . "\\\"";
$value = "\"" . $textvalue . "\"";
$value = "\\'" . $textvalue . "\\'";
$value = "'" . $textvalue . "'";
这些都不起作用,我总是收到以下错误:
解析参数“--change-batch”时出错:无效的 JSON:
无效 \escape:第 12 行第 23 列(字符 246)收到 JSON:
{ "评论": "2018-06-19-11:54", "更改": [ { "行动":
"CREATE", "ResourceRecordSet": { "名称": "example.com",
“类型”:“TXT”,“TTL”:60,“资源记录”:
[ { "Value": "\"某物\"" } ] } } ] }
和其他人aws
未引用的 dns 记录值,PHPshell_exec()
工作完美。
如果我在 Bash 上触发它,它可以完美地使用"\"something\""
- 为什么它不能与 PHP 一起使用shell_exec()
?