PHP如何使用CURL

PHP如何使用CURL,php,python,curl,Php,Python,Curl,我需要执行这个命令 root@debian:~# curl -X PUT -d '{ "date": "2.5.", "order": 2, "prize": 45 }' '[URL]' 在PHP(或Python)中。但是我不知道怎么做。我试过这个: $data = '{ "date": "2.5.", "order": 2, "prize": 45 }'; $data = json_encode($data); echo $data; $ch = curl_init([URL]); curl

我需要执行这个命令

root@debian:~# curl -X PUT -d '{ "date": "2.5.", "order": 2, "prize": 45 }' '[URL]'
在PHP(或Python)中。但是我不知道怎么做。我试过这个:

$data = '{ "date": "2.5.", "order": 2, "prize": 45 }';
$data = json_encode($data);
echo $data;
$ch = curl_init([URL]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_PUT, true);
curl_setopt($ch, CURLOPT_POSTFIELDS,http_build_query($data));
$response = curl_exec($ch);
curl_close($ch);
echo $response;
但这也带来了:

{ "error" : "Error: No data supplied." }

知道如何在PHP/Python中重现它吗?

subprocess.call或subprocess.run将执行您需要的操作,尽管输出将转储到stdout,因此如果您想要操作返回的数据,还需要重定向它。不过,您也可以像其他一些评论者所建议的那样使用


subprocess.call或subprocess.run将执行您需要的操作,尽管输出将转储到stdout,因此如果您想要操作返回的数据,还需要重定向它。不过,您也可以像其他一些评论者所建议的那样使用


根据PHP文档

http\u build\u query
接受数组或对象作为参数。 另外,
json\u encode
返回一个字符串:

因此,您需要改变使用它们的方式

此外,使用
http\u build\u query
可能更可取,因为它对给定参数进行url编码:

因此,您需要将一个数组传递给
http\u build\u query
函数以使其工作:

示例(来自上面的链接):


根据PHP文档

http\u build\u query
接受数组或对象作为参数。 另外,
json\u encode
返回一个字符串:

因此,您需要改变使用它们的方式

此外,使用
http\u build\u query
可能更可取,因为它对给定参数进行url编码:

因此,您需要将一个数组传递给
http\u build\u query
函数以使其工作:

示例(来自上面的链接):


使用。您正在对已经存在的json字符串->错误语法进行json\u编码,并且如果您在POSI进行更改时发送纯json字符串,则还将删除http\u build\u查询,但仍然没有解决问题:/Use。您正在对一个已经存在的json字符串进行json\u编码->错误语法,如果您在POSI进行更改时发送一个纯json字符串,还可以删除http\u build\u查询,但仍然没有解决问题:/Wow这很有效,您救了我的命(和作业:D)。谢谢哇,这成功了,你救了我的命(还有工作:D)。谢谢
import subprocess
import tempfile

with tempfile.TemporaryFile() as tmp:
    subprocess.call(["curl", "-X", "PUT", "-d", '{ "date": "2.5.", "order": 2, "prize": 45 }', '[URL]'], stdout=tmp)
    tmp.seek(0)
    data = tmp.read()
$url = "[URL]";

$data = array(
"date" => "2.5.",
"order" => "2",
"prize" => 45
);

$json_data = json_encode($data);

$ch = curl_init($url);

curl_setopt($ch, CURLOPT_URL, $url);

curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "PUT");

curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);

curl_setopt($ch, CURLOPT_POSTFIELDS, $json_data);

curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$content = curl_exec($ch);

curl_close($ch);
  $curl_parameters = array(
    'param1' => $param1,
    'param2' => $param2
  );

  $curl_options = array(
    CURLOPT_URL => "http://localhost/service",
    CURLOPT_POST => true,
    CURLOPT_POSTFIELDS => http_build_query( $curl_parameters ),
    CURLOPT_HTTP_VERSION => 1.0,
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HEADER => false
  );

  $curl = curl_init();
  curl_setopt_array( $curl, $curl_options );
  $result = curl_exec( $curl );

  curl_close( $curl );