2

我正在尝试将 svn 集成到 php 脚本中以自动化网站启动和版本控制。

我在创建过程中使用 exec php 命令以及 svn 和 svnadmin 命令进行了一些检查。

所以,当我制作和热复制(不存在的存储库)时,它返回值 1(及其正确)但 svnadmin create(路径完全荒谬)总是返回 0(就像创建内容一样,但这不是真的!)

public function routine($istr, $search, $replace) {
 $output = array();
 $returnvar = 0;
 $istr = str_replace($search,$replace,$istr);
 exec($istr." 2>&1", $output,$returnvar);
 $this->addMessage($istr);
 if($returnvar != 0) {
  $this->addMessage("!!! GOT ERRORS !!!");
  $this->addMessage(implode("\n", $output));
 }
}

这条路线确实有效,但 returnvar 始终为 0(如果 svnadmin 命令与 hotcopy 不同)。

该函数的含义是我只想在出现错误时显示完整的输出。不显示任何其他内容(或者可能是确认消息)

希望有人能提前帮助你

4

1 回答 1

1

找到解决方案: http ://www.php.net/manual/en/function.system.php#94929

为我的目的修改它并添加到我的项目中:) 现在我的例程如下所示:

public function routine($istr, $search="", $replace="") {
    $output = array();
    if($search != "" || $replace != "")
        $istr = str_replace($search,$replace,$istr);
    $output = $this->runExec($istr);
    $this->addMessage(preg_replace("/[\n\r]/","",$istr));
    if(strlen($output['stdout']) > 5)
        $this->addMessage($output['stdout']);

    if($output['return'] != "0") {
        $this->addMessage("<font color='red'>!!! GOT ERRORS !!!");
        $this->addMessage($output['stderr']);
        $this->addMessage("</font>");

        return false;
    } else
        $this->addMessage("<font color='orange'>!!! EXEC SUCCESS !!!</font>");

    return true;
}

并且像魅力一样工作:)

于 2013-03-12T15:46:07.090 回答