我有一個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