SSH2和PHP无法正常工作'终端'

时间:2014-11-30 17:12:35

标签: php ssh2-exec

每当我尝试执行

if (!($stream = ssh2_exec($con, "cd $dir; screen -S creative java -Xmx500M -Xms500M -jar spigot.jar" ))) {

它继续以“必须连接到终端”返回。我似乎无法绕过。 我该如何解决/解决这个问题?

3 个答案:

答案 0 :(得分:1)

您可以尝试使用phpseclib的read()/ write()函数。例如

<?php
include('Net/SSH2.php');

$ssh = new Net_SSH2('www.domain.tld');
if (!$ssh->login('username', 'password')) {
    exit('Login Failed');
}

echo $ssh->read('username@username:~$');
$ssh->write("ls -la\n"); // note the "\n"
echo $ssh->read('username@username:~$');

答案 1 :(得分:0)

测试一下: 如果要模拟pty,则应传递pty模拟名称(“vt102”,“ansi”等等),否则传递NULL。

传递false会将false转换为字符串,并会分配一个“”终端。

比照http://php.net/manual/fr/function.ssh2-exec.php

答案 2 :(得分:0)

像您一样启动屏幕需要有效的TTY,因为它会附加到您的会话中。 PHP的ssh实现不会创建类似的会话。

启动屏幕分离应该可以解决问题:

screen -d -m [<command>]

所以你的代码看起来像是:

if (!($stream = ssh2_exec($con, "cd $dir; screen -d -m -S creative java -Xmx500M -Xms500M -jar spigot.jar" ))) {