Php 使用Puppet自动更新编写器

Php 使用Puppet自动更新编写器,php,composer-php,puppet,Php,Composer Php,Puppet,我已经在全球安装了PHP的composer,我正在尝试让Puppet自动运行composer self-update命令 这是我的舱单: exec { "composer self-update": path => '/usr/local/bin/' } 以root用户身份手动运行“/usr/local/bin/composer self update”,但当puppet运行时,会生成以下错误: 从notrun更改为0失败:/usr/bin/env:php:没有这样的文件或目录

我已经在全球安装了PHP的composer,我正在尝试让Puppet自动运行composer self-update命令

这是我的舱单:

exec { "composer self-update":
  path    => '/usr/local/bin/'
}
以root用户身份手动运行“/usr/local/bin/composer self update”,但当puppet运行时,会生成以下错误:

从notrun更改为0失败:/usr/bin/env:php:没有这样的文件或目录

我不明白为什么手工行为与木偶行为不同


此外,我还将Puppet作为root运行。

我可以通过更改exec来解决这个问题。我不确定为什么会有不同,但这是有效的:

exec { "/usr/local/bin/composer self-update":}

请注意,不同之处在于exec名称中包含路径,而不是path参数。如果有人知道它为什么不能以另一种方式工作,这可能会提供一些信息。

按照您编写的方式运行应该是有效的。但是,您可以使用
命令
参数:

exec { "do_some_update" :
   command => "composer self-update",
   path => "/usr/local/bin",
}
通过这种方式,您可以在以后通过以下方式参考
exec

 file { "configuration" :
   require => Exec["do_some_update"]       
 }
而不是键入
Exec[“/usr/local/bin/composer self update”]