Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SSL POST从CURL命令行脚本失败,但从PHP脚本成功_Php_Curl_Rackspace Cloud - Fatal编程技术网

SSL POST从CURL命令行脚本失败,但从PHP脚本成功

SSL POST从CURL命令行脚本失败,但从PHP脚本成功,php,curl,rackspace-cloud,Php,Curl,Rackspace Cloud,我正在尝试对Rackspace云服务执行身份验证。基本上,这包括向发送一个JSON字符串,然后在响应中接收JSON结果 但是,我对此有一些问题,即它在PHP中工作,但在命令行中使用CURL时不起作用 在命令行中执行此操作时: curl -s https://identity.api.rackspacecloud.com/v2.0/tokens -X POST -d '{"auth":{"RAX-KSKEY:apiKeyCredentials":{"username":"<my_userna

我正在尝试对Rackspace云服务执行身份验证。基本上,这包括向发送一个JSON字符串,然后在响应中接收JSON结果

但是,我对此有一些问题,即它在PHP中工作,但在命令行中使用CURL时不起作用

在命令行中执行此操作时:

curl -s https://identity.api.rackspacecloud.com/v2.0/tokens -X POST -d '{"auth":{"RAX-KSKEY:apiKeyCredentials":{"username":"<my_username>", "apiKey":"<my_apikey>"}}}' -H "Content-Type: application/json"
它起作用了,我得到了应该得到的JSON数据

我想知道为什么PHP能工作,而命令行上的CURL却不能?!谢谢

另外,我用的是Windows7电脑

编辑

当我获取JSON字符串并将其放入文件中,然后执行以下操作时,它也会起作用:

curl -s https://identity.api.rackspacecloud.com/v2.0/tokens -X POST -d @myfile.json -H "Content-Type: application/json"

我的建议是:检查php脚本中设置的所有选项,并找到相应的命令行选项(例如,通过
man
页面)。然后重试该命令。

我的建议:检查php脚本中设置的所有选项,并找到相应的命令行选项(例如,通过
man
页面)。然后重试该命令。

我刚刚决定尝试一些我不相信需要执行的操作来解决我的问题,结果证明这就是解决方案

以下工作:

curl -s https://identity.api.rackspacecloud.com/v2.0/tokens -X POST -d "{\"auth\":{\"RAX-KSKEY:apiKeyCredentials\":{\"username\":\"<my_username>\", \"apiKey\":\"<my_apikey>\"}}}" -H "Content-Type: application/json"
curl-shttps://identity.api.rackspacecloud.com/v2.0/tokens -X POST-d“{\“auth\”:{\“RAX-KSKEY:apiKeyCredentials\”:{\“username\”:\“\”,“apiKey\”:\“\”}}”-H“内容类型:application/json”
微妙的区别,即我使用双引号来封装JSON字符串(而不是单引号),然后在JSON字符串中转义双引号


这可能是Windows特有的问题

我只是决定尝试一些我不相信需要做的事情来解决我的问题,结果证明这就是解决办法

以下工作:

curl -s https://identity.api.rackspacecloud.com/v2.0/tokens -X POST -d "{\"auth\":{\"RAX-KSKEY:apiKeyCredentials\":{\"username\":\"<my_username>\", \"apiKey\":\"<my_apikey>\"}}}" -H "Content-Type: application/json"
curl-shttps://identity.api.rackspacecloud.com/v2.0/tokens -X POST-d“{\“auth\”:{\“RAX-KSKEY:apiKeyCredentials\”:{\“username\”:\“\”,“apiKey\”:\“\”}}”-H“内容类型:application/json”
微妙的区别,即我使用双引号来封装JSON字符串(而不是单引号),然后在JSON字符串中转义双引号


这可能是Windows特有的问题

我调查过了,不知道还有什么可以补充的。我觉得这与CURL解析JSON字符串的方式有关。我仔细研究了一下,不知道还需要添加什么。我觉得这与CURL解析JSON字符串的方式有关。很高兴听到这个消息!它在我的Mac电脑上运行,和你的例子一模一样,所以我很高兴你找到了答案。@Kyle谢谢。我早些时候联系了Rackspace技术支持部门,当时与我在一起的人正在使用Mac电脑,无法复制该问题。干杯,很高兴听到!它在我的Mac电脑上运行,和你的例子一模一样,所以我很高兴你找到了答案。@Kyle谢谢。我早些时候联系了Rackspace技术支持部门,当时与我在一起的人正在使用Mac电脑,无法复制该问题。干杯