У меня проблема с 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.