以下是我的剧本:
<?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');
?>
显示以下错误:
Fatal error: Call to undefined function ssh2_connect() in /home/chaosnz/public_html/fotosnap.net/test.php on line 2
我该如何处理?
由于
答案 0 :(得分:19)
老实说,我建议使用phpseclib,pure PHP SSH2 implementation。例如:
<?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');
?>
它更便携,更易于使用,功能更强大。
答案 1 :(得分:18)
我已经安装了SSH2 PECL扩展程序并且它工作正常,感谢所有人帮助...
答案 2 :(得分:12)
答案 3 :(得分:8)
答案 4 :(得分:5)
我已经在ubuntu 16.4 PHP 7.0.27-0 + deb9u和nginx上解决了这个问题
sudo apt install php-ssh2
答案 5 :(得分:2)
要扩展@neubert的答案,如果你使用的是Laravel 5或类似的,你可以使用更简单的phpseclib:
运行composer require phpseclib/phpseclib ~2.0
在你的控制器中添加
use phpseclib\Net\SSH2;
然后在控制器方法中使用它,如:
$host = config('ssh.host');
$username = config('ssh.username');
$password = config('ssh.password');
$command = 'php version';
$ssh = new SSH2($host);
if (!$ssh->login($username, $password)) {
$output ='Login Failed';
}
else{
$output = $ssh->exec($command);
}
答案 6 :(得分:1)
我正在运行CentOS 5.6作为我的开发环境,以下内容对我有用。
su -
pecl install ssh2
echo "extension=ssh2.so" > /etc/php.d/ssh2.ini
/etc/init.d/httpd restart
答案 7 :(得分:0)
用于WHM面板
菜单>服务器配置>终端:
yum install libssh2-devel -y
菜单>软件>模块安装程序
菜单>重新启动服务> HTTP服务器(Apache)
确定要重新启动此服务吗?
是
ssh2_connect()工作!