我无法让phpseclib工作

时间:2015-10-27 09:52:16

标签: php phpseclib

我想做什么

我希望使用upload通过download sftp / php一个文件。 phpseclib-library看起来很有希望。

我已经做了什么

我将conposer.json改为:

{
    "require": {
        "nicolab/php-ftp-client":"*",
        "php-curl-class/php-curl-class":"*",
        "phpseclib/phpseclib":"*"
    }
}

然后我更新了我的目录。 Composer将库安装在供应商文件夹中。

问题

问题是我无法创建新的SFTP-Object

Fatal error: Class 'SFTP' not found in...

我也尝试NET_SFTP作为类名,但这也不起作用。 我不明白的一件事就是为什么on,它在源代码中指出类名为NET_SFTP时明确称为SFTP

自动加载似乎无法正常工作。

我将echo "testline";添加到库中以查看文件是否已加载。如果我使用自动加载,没有任何反应。如果我手动包含该文件,则会打印"testline",但仍未找到该类。

我的代码

示例一

<?php
include '/vendor/autoload.php';

$sftp = new SFTP('domain');
if (!$sftp->login('user', 'pass')) {
    exit('Login Failed');
}

- &GT;没有回声

示例二:

<?php
set_include_path(get_include_path() . PATH_SEPARATOR . 'phpseclib/phpseclib');

include('Net/SSH2.php');

include('Net/SFTP.php');

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

- &GT;回声

在这两个例子中都找不到班级。

1 个答案:

答案 0 :(得分:6)

  

我不明白的一点是,为什么在http://phpseclib.sourceforge.net/sftp/examples.html#stat上它表明类名是NET_SFTP,当它在源中时明显称为SFTP。

该网站正在记录1.0分支。 2.0分支具有类似的API但不完全相同。特别是,它是命名空间而1.0分支不是。

修改你的第一个例子......

<?php
include '/vendor/autoload.php';

$sftp = new \phpseclib\Net\SFTP('domain');
if (!$sftp->login('user', 'pass')) {
    exit('Login Failed');
}

主分支的API可能会发生变化。只有1.0和2.0有固定的API。因此我认为对composer.json的更新也是合适的。即。 "phpseclib/phpseclib": "~2.0"代替*

相关问题