PHP函数ssh2_connect无法正常工作

rav*_*oni 33 php ssh

以下是我的脚本:

    <?php
    $connection = ssh2_connect('XX.XX.XX.XX', 22);
    ssh2_auth_password($connection, 'root', '******');

    $stream = ssh2_exec($connection, 'useradd -d /home/users/test -m testftp');
    $stream = ssh2_exec($connection, 'passwd testftp');
    $stream = ssh2_exec($connection, 'password');
    $stream = ssh2_exec($connection, 'password');
    ?>
Run Code Online (Sandbox Code Playgroud)

它显示以下错误:

Fatal error: Call to undefined function ssh2_connect() in /home/chaosnz/public_html/fotosnap.net/test.php on line 2
Run Code Online (Sandbox Code Playgroud)

我怎么处理这个?

谢谢

rav*_*oni 20

我已经安装了SSH2 PECL扩展,它工作正常,感谢所有帮助...

  • 你是怎么安装的? (7认同)
  • 与此http://programster.blogspot.ch/2013/06/centos-64-install-ssh2-extension-for-php.html (2认同)

neu*_*ert 20

老实说,我建议使用纯PHP SSH2实现的 phpseclib .例:

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

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

echo $ssh->exec('pwd');
echo $ssh->exec('ls -la');
?>
Run Code Online (Sandbox Code Playgroud)

它更便携,更易于使用,功能更强大.

  • 当有人询问如何使他们正在使用的库工作时,为什么要告诉他们使用不同的库呢? (4认同)
  • 对于某些人来说可能是一个很好的解决方案,但我需要一些不需要任何额外安装的东西。 (3认同)
  • @j_allen_morris - 如果有人想让“ereg”在他们的项目中工作,你会告诉他们写一个垫片还是告诉他们用更现代的“preg_match”替换他们的“ereg”函数调用?我想说这两种“观点”都是有效的。另外,请记住,除了我之外,还有 23 个人认为这是一个很好/足够相关的答案,足以证明投赞成票是合理的(截至目前,这个答案有 23 票赞成票和 3 票反对票)。当然,你可以自由地表达不同意见。 (2认同)

小智 12

你需要安装ssh2 lib

sudo apt-get install libssh2-php && sudo /etc/init.d/apache2 restart

这应该足以让你上路了

  • 用usign推荐的替代方法,`sudo apt-get install php-ssh2`。 (3认同)

Nan*_*mar 9

我已经在ubuntu 16.4 PHP 7.0.27-0 + deb9u和nginx上解决了这个问题

sudo apt install php-ssh2 
Run Code Online (Sandbox Code Playgroud)


小智 8

如果您在OSX上运行bomebrew,我使用以下内容来安装它:

brew install php56-ssh2
Run Code Online (Sandbox Code Playgroud)

这对我有用.我从这里拉了它.还应该有使用mac端口的Ubuntu和OSX.

  • 安装后,我仍然收到`Call to undefined function App\ssh2_connect()` - 你知道为什么吗? (2认同)