У меня проблема с 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 не работает).
Я знаю, что она не изменила dirs, так как, когда я выполняю «pwd», она возвращает сообщение о том, что она находится вroot dir still.
Как уже упоминалось ранее, если я запускаю команды из оболочки, они выполняются нормально, поэтому я на 99,9% уверен, что мой синтаксис правильный.
Это выделенный сервер, предоставленныйна 1 & 1, работает CentOS и Plesk 9.