我正在使用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";
}
并返回:fail:无法执行命令
其他命令工作正常,当我在终端中运行命令时,它可以正常工作。
答案 0 :(得分: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";
}