问题描述
我正在尝试通过手动安装使用 SFTP (PHPseclib) 进行连接。那是我第一次使用命名空间,所以我不知道我在做什么是我必须的方式。
我确实从 GitHub 下载了 PHPseclib 作为 ZIP 并将其放入 /home/libs_web/PHP/class/PHPseclib3
之后我使用了这个代码(只是作为例子):
require('/home/libs_web/PHP/class/PHPseclib3/Net/SFTP.PHP');
use PHPseclib3\Net\SFTP;
$sftp = new SFTP('localhost');
$sftp->login('username','password');
正如这里提到的,但在顶部有一个包含:https://phpseclib.com/docs/sftp
这是我的错误:致命错误:未捕获的错误:在 /home/libs_web/PHP/class/PHPseclib3/Net/SFTP.PHP:52 中找不到类 'PHPseclib3\Net\SSH2'
我的命名空间似乎无法正常工作。我不使用自动加载器、作曲家,并尝试将工作目录设置为 /home/libs_web/PHP/class/PHPseclib3/ & /home/libs_web/PHP/class/。
不知道该怎么办了。如果我包含文件 /Net/SSH2.PHP,我会遇到另一个关于另一个文件的错误。我认为这不是正确的工作方式。
你能提供一些帮助吗?
解决方法
phpseclib3 最好与 Composer 一起安装。例如。在 CLI 上执行 composer init; composer require phpseclib/phpseclib:~3.0
。您还可以将 require __DIR__ . '/vendor/autoload.php';
放在文件的顶部
如果你想做一些事情,比如让你的源代码可供人们下载并使其在共享主机上工作,如果 CLI 访问可能不可用,我猜你可以做 Composer,然后自己上传 vendor/ 目录或包括它与您的 zip 文件或其他任何东西。