ssh2_exec () не меняет каталог с помощью «cd»

У меня проблема с ssh_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», он возвращается, говоря, что он все еще находится в корневом каталоге. .

Как упоминалось ранее, если я запускаю команды из оболочки, они выполняются нормально, поэтому я на 99,9% уверен, что мой синтаксис верен.

Это выделенный сервер, предоставляемый 1 & 1, на котором запущены CentOS и Plesk 9.

6
задан halfer 1 July 2017 в 22:20
поделиться