Tengo un problema con ssh_exec()
negándose a ejecutar el comando "cd".ssh2_exec() no cambiará el directorio con "cd"
Si inicio sesión en el servidor directamente y ejecuto el comando, funciona bien, así que no creo que el problema sea con mi comando.
Mi código es el siguiente:
$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);
estoy conectado como root.
El primer comando se ejecuta correctamente y copia el archivo a la ubicación. El segundo comando no se ejecuta, pero no produce errores. El tercer comando muestra un error (obviamente, ya que el comando cd anterior no funciona).
Sé que no ha cambiado los directorios, ya que cuando ejecuto el "pwd", regresa diciendo que todavía está en el directorio raíz.
Como mencioné antes, si ejecuto los comandos desde el shell, se ejecutan bien, entonces estoy 99.9% seguro de que mi sintaxis es correcta.
Este es un servidor dedicado proporcionado por 1 & 1, corriendo CentOS y Plesk 9.
¿Qué ocurre cuando se cambia el comando para 'cd/var/www/vhosts/demo-domain1.com/httpdocs/|| echo "cd failed" '? –