PHP shell_exec()不会返回正确的状态

时间:2013-03-12 16:14:13

标签: php bash shell-exec

我正在尝试从php函数shell_exec()运行一个sh脚本文件,但每次返回都不正确。

这是sh文件内容:

if [[ -z $1 ]]
then
        echo "svn st: NULL"
else
        command=$(ssh -q USER@IP_OF_THE_REMOTE_NODE "svn st $1")
        if [[ -z $command ]]
        then
                test="svn st: OK"
        else
                test="svn st: KO"
        fi
        echo $test
fi

每次我从shell运行这个sh脚本时,回声总是正确的。 “$ 1”包含我必须检查的工作目录。

但是如果我以这种方式运行相同的脚本:

$w_path = $working_path['path'];
$com = "sh /tmp/my_script_test.sh $w_path";

echo "content com ".$com;

$res = shell_exec($com);

echo "content res ".$res;

最后的回声打印总是“svn st:OK”,这对某些$w_path来说是正确的,但对其他人来说完全不正确!为什么?我怎么能找到错误?

我不认为这是一个ssh密钥问题,因为我使用指南来解决这个问题,现在我不需要为远程服务器插入密码。

由于 问候

1 个答案:

答案 0 :(得分:2)

更改

        command=$(ssh -q USER@IP_OF_THE_REMOTE_NODE "svn st $1")
        if [[ -z $command ]]

        if ssh -q USER@IP_OF_THE_REMOTE_NODE "svn st $1"

并记住:每当某些东西不起作用时,都是因为它太复杂了(无法回想起我读到的地方)。