【问题标题】:Bash JSON CURL request not working along with PHP scriptBash JSON CURL 请求不能与 PHP 脚本一起使用
【发布时间】:2019-12-20 15:55:59
【问题描述】:

我正在用 bash 编写一些自动化脚本,在最后一步我希望该脚本通过 CURL 将一些数据发送到远程服务器。数据为JSON格式,数据接收器用PHP编写。

我已经做了很多测试,但是在发出 CURL 请求后没有收到来自 PHP 脚本的答案。

我已经这样做了:

BASH 端(发送方):

#!/bin/bash
json='
{
  "website_url": "${site_url}",
  "web_dir": "${www_dir}",
  "php_fpm_version": "7.3",
  "server_id": "1"
}'


echo "${json}" | curl --request POST "https://website.tld/api/api.php" \
-H "Content-Type: application/json" \
-d @-

PHP端(接收方):

<?php

print_r($_POST);

预期结果:

Array(
{
  "website_url": "${site_url}",
  "web_dir": "${www_dir}",
  "php_fpm_version": "7.3",
  "server_id": "1"
}
)

实际结果:

Aray
(
)

【问题讨论】:

  • 您使用的是什么网络服务器?日志中有错误吗?

标签: php bash curl


【解决方案1】:

发现一个问题:JSON 数组中每行开头的空格。刚刚完成:

json='{
"account": {
"wordpress": {
"username": "${username}",
"password": "${wp_user_pass}"
},
"database": {
"dbname":   "${username}",
"username": "${username}",
"password": "${dbpass}"
},
"ftp": {
"username": "${username}",
"password": "${ftp_user_pass}"
}
},
"website_url": "${site_url}",
"web_dir": "${www_dir}",
"php_fpm_version": "7.3",
"server_id": "1"
}'

【讨论】:

    【解决方案2】:

    您可以通过处理原始输入来获取 JSON 数据。例如将您的 PHP 文件更改为:

    <?php
    
    $data = json_decode(file_get_contents('php://input'), true);
    print_r($data);
    

    【讨论】:

      猜你喜欢
      • 2011-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-09
      • 2020-11-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多