AWS CLI 命令适用于 Bash,但不适用于 PHP shell_exec()

2024-02-11

我想触发以下命令:

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()?


你应该使用原生的escapeshellarg方法来转义传递给命令行的参数。如果您决定在某个阶段在 JSON 字符串中包含潜在不安全的数据,这也可以保护您免受参数注入攻击。

$json = '{ "Comment": "2018-06-19-11:31", "Changes":
[ { "Action": "CREATE", "ResourceRecordSet": { "Name": "example.com",
"Type": "TXT", "TTL": 60, "ResourceRecords":
[ { "Value": "\"something\"" } ] } } ] }';

$command = "aws route53 change-resource-record-sets --hosted-zone-id XXX
 --change-batch " . escapeshellarg($json);

$result = trim(shell_exec($command));

您还可以选择将 JSON 字符串构建为数组,然后使用json_encode()为您构建字符串。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AWS CLI 命令适用于 Bash,但不适用于 PHP shell_exec() 的相关文章

  • 正则表达式删除带有数字的单词

    我想删除产品名称中带有数字 参考 或小单词 2 个或更少字符 的单词 但我找不到好的正则表达式 一些例子 链式防回弹ECS 2035 应成为 链式防反弹 指南 35 厘米俄勒冈 Intenz 应该成为 俄勒冈州 Intenz 指南 Tron
  • SimpleXML:使用包含命名空间的 XML

    我正在尝试从 google picasa API 获取地理信息 这是原始 XML
  • 从多维数组中删除多个值

    我有一个来自 WordPress 的数组get posts 功能 posts array 15 0 gt object WP Post 285 24 ID gt int 253 post author gt string 1 1 post
  • 如何处理 file_get_contents() 中的 403 错误?

    我在使用时遇到 403 错误file get contents 我想这样处理这个错误 if required function file get contents url detects there is a 403 error do so
  • PHP 指针与引用

    在 PHP 中 使用指针有什么区别 例如 function foo var var 3 a 0 foo a 以及参考 function foo var var 3 a 0 foo a 它们都修改了原始变量的值 但是它们内部的表示方式不同吗
  • 致命错误:找不到类“App\PDO”

    当我尝试使用命名空间时出现此错误 I have namespace App 顶部 班级看起来像 class database function construct try this gt db new PDO lt here the err
  • 如何使用 PHP 从文档中删除无效的 XML 字符

    我试图生成一个大约 23 到 30 MB 的 XML 文档 当我用 Firefox 打开它时 我收到 XML Parsing Error not well formed Location file Users User Downloads
  • 如何为 eclipse PHP 调试设置正确的 URL

    我在使用非标准 URL 在 Eclipse 中设置 PHP 调试时遇到问题 我的应用程序的 URL 必须是http xxx index php http xxx index php 这是我无法轻易改变的 我在设置调试配置来调用此 URL 时
  • 编写 PHP SQL 更新语句的最佳方法

    我有这个 PHP SQL 语句 updateCategory UPDATE category SET name name description description parent parent active active WHERE i
  • 发送邮件时PEAR邮件验证失败

    由于我发现 PHP 中内置的邮件功能存在安全漏洞 因此我尝试使用 PEAR 我已经在本地主机 WAMP 服务器 2 2 上安装并进行了必要的配置 但是 每次我尝试发送电子邮件时 都会显示以下消息 error authentication f
  • after_or_equal 验证在 laravel 5.2 中不起作用

    我想比较 start date 和 end date 并且 end date 应等于或大于 start date 我正在使用 after or equal 验证 return Validator make data start date g
  • 使用 Kendo Upload 进行 Kendo Grid 内联编辑返回空结果

    我有 Kendo UI Gridinline编辑和我的领域之一 propertyLogo I use 剑道上传 https demos telerik com kendo ui upload index上传图像 使用kendoUpload函
  • MySQL - 重命名列

    如何重命名 mysql 列help to content在我的桌子上tbl help mysql query ALTER TABLE tbl help CHANGE COLUMN help content 您必须在更改列语句中包含列的定义
  • 如何在php中用一行调用两个方法?

    我在 Laravel 中看到在单行中调用多个方法 例如 DB get test gt toJson 我在该类中有一个很酷的类和视图方法 this gt call gt view welcome gt anotherMethod 我还想调用另
  • 在 CentOS 6.5 上升级 PHP(最终版)

    我正在尝试更新我的 PHP 当前 v 5 3 3 到最新的稳定 PHP 版本 但它没有正常运行 并且显示没有任何内容可以更新 任何帮助都会有用的 不断地说 没有标记为更新的软件包 正如 Jacob 提到的 CentOS 软件包存储库目前似乎
  • 我如何知道是否启用了 PHP 缓存?

    我曾经认为缓存很难安装 所以我从来没有这样做过 在阅读了有关 APC 的内容后 它似乎很容易安装 我一直认为我必须修改应用程序中的大量 PHP 代码才能使用它 哈哈 不管怎样 我想安装APC 我可以使用 phpinfo 并注意到它没有在页面
  • 为什么我们要关闭 Mysqli 中的结果

    为什么我们要关闭 result mysqli new mysqli localhost root root test if mysqli gt connect errno echo Failed to connect to MySQL my
  • TCPDF 为一个文档中的不同页面设置不同的页眉

    有没有办法使文档中第一页的页眉徽标和第二页的页眉徽标不同 我认为在添加页面之间更改标题数据可能会解决问题 但在我的测试中 添加第一页后设置标题似乎没有效果 other stuff pdf gt setHeaderFont array PDF
  • localhost/test.php 不返回任何内容

    我正在遵循教程构建一个网络应用程序 我创建了一个简单的test php网络空间中的文件 var www html 问题是当我输入localhost test php在浏览器地址窗口中 它返回一个空页面 我试过localhost php in
  • Apache“无法初始化模块”,因为更改 PHP 配置后模块和 PHP 的 API 不匹配

    php v 给出了这个 PHP Warning PHP Startup memcache Unable to initialize module Module compiled with module API 20060613 PHP co

随机推荐

  • “已弃用”是什么意思? [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我是and
  • Xamarin Forms MVVM (Prism) with Media.Plugin - 如何从设备存储中获取拍摄的照片

    我正在使用 Xamarin Forms PCL MVVM Prism 和 MediaPlugin https github com jamesmontemagno MediaPlugin https github com jamesmont
  • MethodInfo.Invoke参数顺序

    我正在尝试使用反射调用方法 像这样的事情 method Invoke instance propValues ToArray 问题是没有办法确保参数数组的顺序正确 有没有办法通过名称来指定哪些值适用于哪个参数 或者我真的必须制作一个定制活页
  • 允许调试器;某些文件中的语句,使用 ESLint

    假设我想使用这个规则 https eslint org docs rules no debugger https eslint org docs rules no debugger 但是 我想在其中保留大约 15 个文件 声明 我可以在 t
  • 将额外的系统属性添加到 Eclipse 编程重启

    我有一个插件 可以使用以下命令强制重新启动 Eclipse Workbench getInstance restart 但是 我需要重新启动以包含新的环境变量 eclipse refreshBundles true 有什么方法可以仅为下次重
  • 无法在 Python 3.6.6 上的 Open CV 3.4.1 上运行跟踪

    我尝试在 python 3 6 6 上使用 open CV 运行跟踪 但它显示 AttributeError 模块 cv2 没有属性 TrackerKCF create 我也尝试了 python 2 7 API 但结果相同 Attribut
  • 使用 mongodb 聚合框架计算频率

    我正在尝试根据 10 秒的间隔计算数据库中文档的频率 这就是我的数据库对象的样子 created at 2014 03 31T22 30 48 000Z id 450762158586880000 id 5339ec9808eb125965
  • 带区域的 Orchard/MVC WCF 服务 URL

    Bertrand 创建了一个博客post http weblogs asp net bleroy archive 2011 04 20 orchard 1 1 what s in it for developers aspx指定如何在 Or
  • 如何在 gcc 中强制执行 C89 风格的变量声明?

    我工作的代码库主要是 C 和一点点 C 并且主要是用 gcc 构建的 但有时需要用 MSVC 构建 微软的 C 编译器仍然是 C89 带有一些小的扩展 并且它仍然不支持混合代码和变量定义 laC C99 因此 我需要找到一种方法来防止开发人
  • Android 键盘显示后 jQuery 移动页脚或视口大小错误

    我的 jquery 移动网络应用程序遇到以下问题 我的 jquery 应用程序有一个固定的页脚 但是当 android 键盘打开时 即单击浏览器栏并手动重新加载页面时 视口似乎仅从顶部 浏览器栏下方 向下到上部键盘边缘 然后页面重新加载 视
  • 对于特殊字符,URL 编码失败。 #安卓

    我正在研究需要的解决方案encode串入utf 8格式 这个字符串只是我正在读取的设备名称BluetoothAdapter getDefaultAdapter name 对于其中一个示例 我得到了一个像这样的字符串ABC and encod
  • Angular 指令 ng-if 不评估条件语句

    我是 Web 开发和 AngularJS 的新手 我尝试使用指令 ng if 仅在从数据库返回的列表大于 1 时显示 div 块 但它不起作用 我是否滥用了该指令 我环顾四周 没有找到任何有效的解决方案 目前 两个 div 都会显示 并且
  • 通过 Karma 运行时如何调试 PhantomJS

    我通过 Jasmine Karma 和各种浏览器进行测试 我目前正在调试一个仅在 PhantomJS 中失败的测试 我想调试这个调用 所以我在 karma 中设置了一个自定义 PhantomJS 启动器 它在调试端口打开的情况下运行它 我可
  • 检测圆形(非精确圆形)路径算法?

    我收到一个路径 来自触摸事件的 x y 坐标列表 如何检测该路径形成圆形路径 不是完整或精确的圆 有什么算法或方法可以检测到这一点吗 这是一篇论文 总结了将圆拟合到数据的各种方法 http www cs bsu edu homepages
  • ios metal:着色器中使用的变量数量限制

    在向着色器添加一些复杂性后 我今天开始收到以下错误 Execution of the command buffer was aborted due to an error during execution Discarded victim
  • 多个视图控制器上的相同 UIProgressView

    PREAMBLE 我有一个 iOS 应用程序 有两个页面的注册过程 我在每个页面上安装了一个 UIProgressView 来测量用户在所述注册过程中的累积进度 目前 注册过程由六个字段组成 当文本字段完成编辑时 现有的 UIProgres
  • 使用 Moq 可以验证匿名类型的方法调用吗?

    我正在尝试使用 Moq 验证方法调用 但我无法完全正确地理解语法 目前 我已将此作为我的验证 repository Verify x gt x ExecuteNonQuery fav AddFavorites new fid 123 inp
  • 如何删除 bash 中多余的空格?

    如何删除变量中多余的空格HEAD HEAD how to remove extra spaces Result how to remove extra spaces 尝试这个 echo HEAD tr s 或者也许您想将其保存在变量中 NE
  • Ajax 没有 JQuery? [复制]

    这个问题在这里已经有答案了 可能的重复 如何在没有jquery的情况下进行ajax调用 https stackoverflow com questions 8567114 how to make an ajax call without j
  • AWS CLI 命令适用于 Bash,但不适用于 PHP shell_exec()

    我想触发以下命令 aws route53 change resource record sets hosted zone id XXX change batch Comment 2018 06 19 11 31 Changes Action