Tôi gặp sự cố với ssh_exec()
từ chối thực hiện lệnh "cd".ssh2_exec() sẽ không thay đổi thư mục bằng "cd"
Nếu tôi đăng nhập trực tiếp vào máy chủ và thực hiện lệnh, nó hoạt động tốt, vì vậy tôi không nghĩ rằng vấn đề là với lệnh của tôi.
Mã của tôi là như sau:
$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);
Tôi đang đăng nhập bằng root.
Lệnh đầu tiên chạy đúng và sao chép tệp vào vị trí. Lệnh thứ hai không thực thi, nhưng không có lỗi. Lệnh thứ ba hiển thị một lỗi (rõ ràng là lệnh cd trước đó không hoạt động).
Tôi biết nó đã không thay đổi dir, như khi tôi thực hiện "pwd", nó trả về nói rằng nó vẫn còn trong thư mục gốc.
Như đã đề cập trước đây, nếu tôi chạy lệnh từ trình bao, chúng thực thi tốt, vì vậy tôi chắc chắn 99.9% cú pháp của tôi là chính xác.
Đây là một máy chủ chuyên dụng được cung cấp bởi 1 & 1, chạy CentOS và Plesk 9.
gì xảy ra khi bạn thay đổi lệnh cho 'cd/var/www/vhosts/demo-domain1.com/httpdocs/|| echo "cd failed"? –