没有作曲家的CodeIgniter上的phpseclib 2.0,关于ParagonIE的错误

时间:2017-10-09 15:57:34

标签: php codeigniter composer-php phpseclib

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

我试图不完全使用composer,因为我不想依赖人们安装Composer,所以我在phpseclib的composer.json上运行了一个本地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 功能:__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

感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

听起来你正在使用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