Mam problem z ssh_exec()
odmową wykonania polecenia "cd".ssh2_exec() nie zmienia katalogu z "cd"
Jeśli loguję się bezpośrednio do serwera i wykonuję polecenie, działa dobrze, więc nie sądzę, że problem dotyczy mojego polecenia.
Mój kod wygląda następująco:
$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);
jestem zalogowany jako root.
Pierwsze polecenie działa poprawnie i kopiuje plik do lokalizacji. Drugie polecenie nie wykonuje, ale nie wysyła żadnych błędów. Trzecie polecenie wyświetla błąd (oczywiście, ponieważ poprzednie polecenie cd nie działa).
Wiem, że nie zmienił katalogów, tak jak wtedy, gdy wykonuję "pwd", to powraca, mówiąc, że jest w katalogu głównym.
Jak już wspomniano, jeśli uruchamiam polecenia z powłoki, działają one poprawnie, więc mam 99,9% pewności, że moja składnia jest poprawna.
Jest to serwer dedykowany dostarczone przez 1 & 1, uruchomiony CentOS i Plesk 9.
Co się dzieje, kiedy zmienić komendę 'cd/var/www/vhosts/demo-domain1.com/httpdocs/|| echo "cd failed" '? –