phpseclib 2.0的安装过程不起作用

时间:2019-05-15 19:57:13

标签: php phpseclib

在安装phpseclib-2.0时,作曲家似乎无法创建正确的目录结构

我正在尝试在生产Linux服务器上安装phpseclib-2.0。我已经在另一个服务器上安装了1.07,但是希望将生产服务器的版本提高到2.0。
我遵循的安装步骤是:
1.)我将库下载并解压缩到phpseclib-2.0 /
2.)将该文件夹复制到我的应用程序文件夹中的vendor / 3.)光盘到vendor / phpseclib-2.0
4.)执行composer install

结果结构为 供应商-phpseclib-2.0
供应商-phpseclib-2.0-phpseclib(包括地穴,文件,数学,网络,系统)
供应商-phpseclib-2.0-供应商(这是结束作曲家和自动加载的地方)

这是我用于测试的代码:

require __DIR__ . '/vendor/phpseclib-2.0/vendor/autoload.php';
use phpseclib\Net\SFTP;

$connection = ssh2_connect($FTP_URI, 22);
if (!$ssh->login(username, password)) {
    exit('Login Failed');
}

echo $ssh->exec('pwd');
echo $ssh->exec('ls -la');

我希望它会给我一个目录清单。

我得到的是:
PHP致命错误:调用未定义函数ssh2_connect()

请注意,测试是使用php -f sshtest.php

运行的

感谢您的帮助

1 个答案:

答案 0 :(得分:0)

$connection = ssh2_connect($FTP_URI, 22);

在phpseclib中没有定义。那是PECL的ssh2扩展名。

要使用phpseclib进行此操作,这是您需要做的:

require __DIR__ . '/vendor/phpseclib-2.0/vendor/autoload.php';
use phpseclib\Net\SFTP;

$connection = new SFTP($FTP_URI, 22);
if (!$ssh->login(username, password)) {
    exit('Login Failed');
}

echo $ssh->exec('pwd');
echo $ssh->exec('ls -la');