Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.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
Php 通过Chef服务器API向Chef添加用户_Php_Http_Chef Infra - Fatal编程技术网

Php 通过Chef服务器API向Chef添加用户

Php 通过Chef服务器API向Chef添加用户,php,http,chef-infra,Php,Http,Chef Infra,我正试图通过Chef服务器API在我的Chef服务器上创建一个用户。我目前正在为API接口使用一个PHP包装器,可以找到它 我理解,为了使用API创建用户,必须提供pivotal.pem文件以及pivotal用户名 下面是我正在使用的PHP代码片段: // ENVIRONMENT VARIABLES // The URL for the Chef Server $server = "mycompany.com"; // The name used when authenticating $cl

我正试图通过Chef服务器API在我的Chef服务器上创建一个用户。我目前正在为API接口使用一个PHP包装器,可以找到它

我理解,为了使用API创建用户,必须提供pivotal.pem文件以及pivotal用户名

下面是我正在使用的PHP代码片段:

// ENVIRONMENT VARIABLES
// The URL for the Chef Server
$server  = "mycompany.com";
// The name used when authenticating
$client  = 'pivotal';
// The location of the file which contains the client key
$key     = "../../../pivotal.pem";
// The version of the Chef Server API that is being used
$version = "12.0.2";

// Create a Chef object
$chef = new Chef($server, $client, $key, $version);

// API Request
$createUserRequest = array("name"=>$displayName, "display_name"=>$displayName, "email"=>$emailAddress, "password"=>$password);
$createUserRequest = json_encode($createUserRequest);

$chef->post('/users/', $createUserRequest); 
以下是我从服务器收到的响应:

Fatal error: Uncaught exception 'Exception' with message 'Invalid signature for user or client 'pivotal'' in C:\Workspace\SA_SSAF\app\plugin\CHEF\Chef PHP\src\Jenssegers\Chef\Chef.php:187
Stack trace:
#0 C:\..\..\app\plugin\CHEF\Chef PHP\src\Jenssegers\Chef\Chef.php(70): Jenssegers\Chef\Chef->api('/users/', 'POST', '{"name":"entra"...')
#1 C:\..\..\app\plugin\CHEF\controller\chefEnrollUser.php(55): Jenssegers\Chef\Chef->post('/users/', '{"name":"entra"...')
#2 {main}
  thrown in C:\..\..\app\plugin\CHEF\Chef PHP\src\Jenssegers\Chef\Chef.php on line 187
如果我尝试使用相同的配置执行GET请求,我会收到一个成功的响应

关于为什么会发生这样的事情有什么线索吗


谢谢

再次阅读API,发布到
/users
不接受任何参数(并返回当前uer配置文件的url)。如果您想创建一个用户,您必须在本例中发布到
/users/NAME
$chef->post(“/users/”$displayname,$createUserRequest)应该可以。不要再试图比较GET和POST请求,这就像比较阅读文档和编写文档一样,它们有不同的用途,不接受相同的参数。@Tensibai,感谢您的澄清。我继续从服务器收到一个405-Method Not Allowed响应,尽管传入了您提到的必需参数。然后在发送请求时请求chef服务器日志(
chef server ctl tail
),它应该会给您更多信息。尝试删除json_encode调用,IIRc库已经解决了这个问题,您的问题最终可能是双重json编码。再次阅读API,发布到
/users
不接受任何参数(并返回当前uer配置文件的url)。如果您想创建一个用户,您必须在本例中发布到
/users/NAME
$chef->post(“/users/”$displayname,$createUserRequest)应该可以。不要再试图比较GET和POST请求,这就像比较阅读文档和编写文档一样,它们有不同的用途,不接受相同的参数。@Tensibai,感谢您的澄清。我继续从服务器收到一个405-Method Not Allowed响应,尽管传入了您提到的必需参数。然后在发送请求时请求chef服务器日志(
chef server ctl tail
),它应该会给您更多信息。尝试删除json_encode调用,IIRc库已经处理好了,您的问题最终可能是双重json编码。