【问题标题】:How to run multiple command with exec in php如何在php中使用exec运行多个命令
【发布时间】:2023-03-06 18:58:01
【问题描述】:

我需要使用exec 依次运行 2 个命令,但它不会运行。

代码

$command1 = 'cd '.$destination.''; //open destination folder (e.g. public_html)
$command2 = 'git clone '.$repos->repository.''; //make clone

$sshConnection1 = exec($command1); // run first command(open folder)
$sshConnection = exec($command2); //run second command (make clone)

在我创建这个问题之前,我阅读了一些建议的主题,例如 this one。添加"&" 等,但没有运气。

请告诉我应该怎么做才能成功运行这两个命令。

【问题讨论】:

  • @Amessihel 但他们不会,我用dd($sshConnection1);检查了第一个命令,它返回false
  • exec("cd $destination && git clone ...")怎么样
  • @KarstenKoop 谢谢老兄,它有效,请分享它作为答案,我会接受它

标签: php bash


【解决方案1】:

您可以将这两个命令与&& 组合在一起,从而将它们简单地放入一个exec() 调用中:

exec("cd $destination && git clone {$repos->repository}");

【讨论】:

    【解决方案2】:

    它看起来像 PHP 的 exec 在某个时候分叉,所以 cd 不会影响父进程。

    php > echo getcwd();
    /home/nchambers
    php > exec("cd ..");
    php > echo getcwd();
    /home/nchambers
    php > echo exec("pwd");
    /home/nchambers
    php > exec("cd ..");
    php > echo exec("pwd");
    /home/nchambers
    php >
    

    另外,git clone 可以使用目标目录进行写入。如果没有更多信息,我无法说明您的命令为什么会失败,而只是您尝试运行的一些初始问题。

    【讨论】:

      猜你喜欢
      • 2023-01-13
      • 1970-01-01
      • 1970-01-01
      • 2019-02-18
      • 2016-01-29
      • 1970-01-01
      • 2011-03-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多