0

我正在使用 ssh2_exec 在我的 CentOS 服务器上从 PHP 执行一些命令,并且我已经使用了很多次,但是今天,当我尝试使用 && 使它一次执行 4 或 5 个命令时,它不起作用。下面是代码:

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";
 }

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

其他命令工作正常,当我在终端中运行命令时它工作正常。

4

1 回答 1

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";
}
于 2012-11-14T23:46:47.257 回答