没有作曲家的 CodeIgniter 上的 phpseclib 2.0,有关 ParagonIE 的错误
phpseclib 2.0 on CodeIgniter without composer, error about ParagonIE
我正在尝试将 phpseclib 2.0 与我的应用程序集成以与 PHP7.0 兼容。我以前使用 phpseclib 与 PHP5 一起工作,但我的 PHP7.0 机器上的一堆错误提示更新 phpseclib。
我尽量不完全使用 Composer,因为我不想依赖别人安装 Composer,所以我 运行 在我的 composer.json 上有一个本地 php composer.phar dump-autoload -o
来自phpseclib 生成所需的 autoload.php 并将其上传到我的网络服务器。
这是我的文件设置:
/application
/config
/controllers
/core
/errors
/helpers
/hooks
/language
/logs
/models
/third_party
/phpseclib
<phpseclib2.0 files here>
/vendor
/composer
/autoload_*.php
/ClassLoader.php
autoload.php
在我需要 SSH2 和 SFTP 的模型之一中,我有以下内容:
public function __construct() {
require_once(APPPATH . '/third_party/vendor/autoload.php');
$loader = new \Composer\Autoload\ClassLoader();
$loader->addPsr4('phpseclib\', __DIR__ . '/third_party/phpseclib');
$loader->register();
// Note $ip, $port, $user, $pass called from a config file separately.
$this->ssh_conn = new \phpseclib\Net\SSH2($ip, $port);
$this->sftp_conn = new \phpseclib\Net\SFTP($ip, $port);
$this->ssh_conn->login($user, $pass);
加载页面出现错误:
Type: Error
Message: Class 'ParagonIE\ConstantTime\Hex' not found
Filename: /var/www/public_html/application/third_party/phpseclib/Math/BigInteger/Engines/PHP.php
Line Number: 114
回溯:
文件:/var/www/public_html/application/third_party/phpseclib/Math/BigInteger/Engines/Engine.php
线路:127
功能:初始化
文件:/var/www/public_html/application/third_party/phpseclib/Math/BigInteger/Engines/PHP.php
线路:92
函数:__construct
文件:/var/www/public_html/application/third_party/phpseclib/Math/BigInteger.php
线路:151
函数:__construct
文件:/var/www/public_html/application/third_party/phpseclib/Net/SSH2.php
线路:1670
函数:__construct
文件:/var/www/public_html/application/third_party/phpseclib/Net/SSH2.php
线路:1248
函数:key_exchange
文件:/var/www/public_html/application/third_party/phpseclib/Net/SSH2.php
线路:2126
功能:连接
文件:/var/www/public_html/application/third_party/phpseclib/Net/SSH2.php
线路:2110
函数:call_user_func_array
感谢任何帮助。
听起来您使用的是 phpseclib 的主分支 - 而不是 2.0 分支。
最新的 2.0 版本不使用 ParagoneIE\ConstantTime\Hex。至少它不是 composer.json:
https://github.com/phpseclib/phpseclib/blob/2.0.6/composer.json
paragonie/constant_time_encoding 但是,在 master 分支的 composer.json:
https://github.com/phpseclib/phpseclib/blob/master/composer.json
我正在尝试将 phpseclib 2.0 与我的应用程序集成以与 PHP7.0 兼容。我以前使用 phpseclib 与 PHP5 一起工作,但我的 PHP7.0 机器上的一堆错误提示更新 phpseclib。
我尽量不完全使用 Composer,因为我不想依赖别人安装 Composer,所以我 运行 在我的 composer.json 上有一个本地 php composer.phar dump-autoload -o
来自phpseclib 生成所需的 autoload.php 并将其上传到我的网络服务器。
这是我的文件设置:
/application
/config
/controllers
/core
/errors
/helpers
/hooks
/language
/logs
/models
/third_party
/phpseclib
<phpseclib2.0 files here>
/vendor
/composer
/autoload_*.php
/ClassLoader.php
autoload.php
在我需要 SSH2 和 SFTP 的模型之一中,我有以下内容:
public function __construct() {
require_once(APPPATH . '/third_party/vendor/autoload.php');
$loader = new \Composer\Autoload\ClassLoader();
$loader->addPsr4('phpseclib\', __DIR__ . '/third_party/phpseclib');
$loader->register();
// Note $ip, $port, $user, $pass called from a config file separately.
$this->ssh_conn = new \phpseclib\Net\SSH2($ip, $port);
$this->sftp_conn = new \phpseclib\Net\SFTP($ip, $port);
$this->ssh_conn->login($user, $pass);
加载页面出现错误:
Type: Error
Message: Class 'ParagonIE\ConstantTime\Hex' not found
Filename: /var/www/public_html/application/third_party/phpseclib/Math/BigInteger/Engines/PHP.php
Line Number: 114
回溯:
文件:/var/www/public_html/application/third_party/phpseclib/Math/BigInteger/Engines/Engine.php 线路:127 功能:初始化
文件:/var/www/public_html/application/third_party/phpseclib/Math/BigInteger/Engines/PHP.php 线路:92 函数:__construct
文件:/var/www/public_html/application/third_party/phpseclib/Math/BigInteger.php 线路:151 函数:__construct
文件:/var/www/public_html/application/third_party/phpseclib/Net/SSH2.php 线路:1670 函数:__construct
文件:/var/www/public_html/application/third_party/phpseclib/Net/SSH2.php 线路:1248 函数:key_exchange
文件:/var/www/public_html/application/third_party/phpseclib/Net/SSH2.php 线路:2126 功能:连接
文件:/var/www/public_html/application/third_party/phpseclib/Net/SSH2.php 线路:2110 函数:call_user_func_array
感谢任何帮助。
听起来您使用的是 phpseclib 的主分支 - 而不是 2.0 分支。
最新的 2.0 版本不使用 ParagoneIE\ConstantTime\Hex。至少它不是 composer.json:
https://github.com/phpseclib/phpseclib/blob/2.0.6/composer.json
paragonie/constant_time_encoding 但是,在 master 分支的 composer.json:
https://github.com/phpseclib/phpseclib/blob/master/composer.json