簡體   English   中英

我不能讓phpseclib工作

[英]I can't get phpseclib to work

我想做的事

我想使用php通過sftp upload / download文件。 phpseclib-library看起來非常有前途。

我已經做了什么

我將我的conposer.json改為:

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

然后我更新了我的目錄。 Composer將庫安裝在vendor文件夾中。

問題

問題是我無法創建新的SFTP-Object

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

我也嘗試使用NET_SFTP作為類名,但這也不起作用。 有一點我不明白為什么上面 ,它聲明類名是NET_SFTP當它在源中時它明顯稱為SFTP

自動加載似乎不起作用。

我添加了echo "testline"; 到庫中查看文件是否已加載。 如果我使用自動加載,沒有任何反應。 如果我手動包含該文件,則打印"testline"但仍未找到該類。

我的守則

例一

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

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

- >沒有回音

示例二:

<?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');
}

- >回聲

在這兩個例子中,它都找不到課程。

我不明白的一件事是為什么在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"而不是*

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM