【问题标题】:phpseclib 2.0 on CodeIgniter without composer, error about ParagonIE没有作曲家的 CodeIgniter 上的 phpseclib 2.0,关于 ParagonIE 的错误
【发布时间】:2017-10-09 15:57:33
【问题描述】:

我正在尝试将 phpseclib 2.0 与我的应用程序集成以与 PHP7.0 兼容。我之前有 phpseclib 使用 PHP5,但是我的 PHP7.0 机器上的一堆错误提示更新 phpseclib。

我试图不完全使用作曲家,因为我不想依赖别人来安装作曲家,所以我在我的 composer.json 上从 phpseclib 运行了一个本地 php composer.phar dump-autoload -o 以生成所需的 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 函数:__构造

文件:/var/www/public_html/application/third_party/phpseclib/Math/BigInteger.php 线路:151 函数:__构造

文件:/var/www/public_html/application/third_party/phpseclib/Net/SSH2.php 线路:1670 函数:__构造

文件:/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

感谢任何帮助。

【问题讨论】:

  • 您是否上传了供应商文件夹中的更改?
  • 我在本地运行php composer.phar dump-autoload -o 后上传更改是什么意思?如果是这样,是的。如果不是,那我不明白你的意思。

标签: php codeigniter composer-php phpseclib


【解决方案1】:

听起来您使用的是 phpseclib 的 master 分支 - 而不是 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

【讨论】:

  • 啊,很可能就是这样。我刚刚复制了我拥有的文件。哎呀。
猜你喜欢
  • 2018-10-04
  • 2019-06-03
  • 2015-11-27
  • 2015-07-24
  • 2012-11-11
  • 2020-06-22
  • 2023-04-04
  • 2016-02-28
  • 2021-08-07
相关资源
最近更新 更多