我有一个ssh_exec()
拒绝执行“cd”命令的问题。ssh2_exec()不会改变目录与“cd”
如果我直接登录到服务器并执行命令,它工作正常,所以我认为问题不在我的命令。
我的代码如下:
$str = ssh2_exec($sshStream, 'cp /var/www/compressed.tar.gz /var/www/vhosts/demo-domain1.com/httpdocs/');
$errstr = ssh2_fetch_stream($str, SSH2_STREAM_STDERR);
stream_set_blocking($str, true);
stream_set_blocking($errstr, true);
echo "Output: " . stream_get_contents($str);
echo "Error: " . stream_get_contents($errstr);
$str = ssh2_exec($sshStream, 'cd /var/www/vhosts/demo-domain1.com/httpdocs/');
$errstr = ssh2_fetch_stream($str, SSH2_STREAM_STDERR);
stream_set_blocking($str, true);
stream_set_blocking($errstr, true);
echo "Output: " . stream_get_contents($str);
echo "Error: " . stream_get_contents($errstr);
$str = ssh2_exec($sshStream, 'tar xzf c-class.tar.gz');
$errstr = ssh2_fetch_stream($str, SSH2_STREAM_STDERR);
stream_set_blocking($str, true);
stream_set_blocking($errstr, true);
echo "Output: " . stream_get_contents($str);
echo "Error: " . stream_get_contents($errstr);
我以root身份登录。
第一个命令正确运行并将文件复制到该位置。第二个命令不执行,但不输出错误。第三个命令显示一个错误(很明显,因为前面的cd命令不起作用)。
我知道它没有改变目录,因为当我执行“pwd”时,它返回说它仍然在根目录中。
如前所述,如果我从shell运行命令,它们执行得很好,所以我99.9%确定我的语法是正确的。
这是由1 & 1提供的专用服务器,运行CentOS的和Plesk 9.
当您更改命令`CD会发生什么/ var/www/vhosts/demo-domain1.com/httpdocs/||回声“光盘失败”`? – 2011-01-07 16:42:04