【问题标题】:Error while using symfony process / exec / shell_exec to launch gcloud compute ssh使用 symfony 进程/exec/shell_exec 启动 gcloud compute ssh 时出错
【发布时间】:2019-02-27 16:19:43
【问题描述】:

我需要通过 php 执行 gcloud coumpute ssh --command(我稍后会检查安全性)。

无论我使用 exec、shell_exec 还是 Symfony 进程,命令都会崩溃:

Symfony 进程示例(exec 或 shell_exec 也是如此),简单的lscommand 用于测试:

$process = new Process("/path/to/google-cloud-sdk/bin/gcloud compute ssh my-instance --command='ls' ");
$process->run();
if (!$process->isSuccessful()) {
    throw new ProcessFailedException($process);
}
echo $process->getOutput();

if (!$process->isSuccessful()) {

}

我收到以下错误:

gcloud 崩溃 (AttributeError): 'NoneType' 对象没有属性 'split'

请注意,直接在 CLI 中复制粘贴的相同命令可以完美运行。

有什么提示吗?

【问题讨论】:

  • 我认为不会这样做,ssh 到实例需要 ssh 密钥对、与元数据服务器的交互以及要安装和验证的 gcloud 命令。
  • Gcloud 已安装,并在系统范围内进行了身份验证。一切正常,直接在 CLI 中执行命令。 shell_exec 相同的命令失败。经过大量调试后,看起来 PATH env 是空的,带有 shell_exec。

标签: php google-api google-cloud-platform google-compute-engine shell-exec


【解决方案1】:

这是对发生的情况的解释,$_ENV 实际上并没有设置环境变量,即该变量不会传播到您启动的任何子进程(分叉脚本进程除外,在这种情况下,它只是脚本内存中的一个变量) 这解释了Here

【讨论】:

    猜你喜欢
    • 2021-09-08
    • 2018-03-01
    • 1970-01-01
    • 2020-05-11
    • 1970-01-01
    • 1970-01-01
    • 2016-07-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多