2012-11-14 307 views
0

我使用ssh2_exec在我的CentOS服务器上执行PHP的几个命令,并且我已经多次使用它,但今天,当我尝试使它在4或5条命令一旦与& &,它没有工作。这里是代码如下:PHP ssh2_exec,一次执行多个命令

if (!($stream = ssh2_exec($con, 'cp -rf /home/shared/Tekkit_Server_3.1.2.zip /home/servers2/'.$mUsername.' && unzip /home/servers2/'.$mUsername.'/Tekkit_Server_3.1.2.zip && rm -rf /home/servers2/'.$mUsername.'/mods/mod_NetherOres.jar && mv -f /home/servers2/'.$mUsername.'/Tekkit.jar /home/servers2/'.$mUsername.'/craftbukkit.jar'))) { 
    echo "fail: unable to execute command\n"; 
} 

它复制的ZIP到正确的目录,但然后什么也没有从那里,任何想法?

谢谢!

编辑

我试图做只是:

if (!($stream = ssh2_exec($con, 'unzip /home/servers2/'.$mUsername.'/Tekkit_Server_3.1.2.zip'))){ 
         echo "fail: unable to execute command\n"; 
} 

和它返回:失败:无法执行命令

其他命令做工精细,当我在运行命令终端工作正常。

+0

看看这有助于:HTTP:// WWW。 php.net/manual/en/function.ssh2-exec.php#59324 – rws907

+0

似乎没有使用该方法。我甚至只是试着用睡眠把它们分离成单独的命令(5);在每个之间,它没有工作。 –

+0

您可以让它将结果输出到目标机器上的日志,然后去查看它失败的位置? – rws907

回答

1

我测试你的榜样,它看起来像它,如果你提供-d选项unzip命令,并指定文件应该被解压缩目录的工作原理:

if (!($stream = ssh2_exec($con, 'unzip /home/servers2/'.$mUsername.'/Tekkit_Server_3.1.2.zip -d /home/servers2/'.$mUsername))){ 
    echo "fail: unable to execute command\n"; 
}