phpseclib警告:unpack()[function.unpack]:类型C:输入不够

时间:2013-05-14 13:10:30

标签: php phpseclib

某些SFTP凭据适用于以下开源,但有些凭据会丢失以下错误。以下错误的根本原因是什么,我看到他们发布了一些线程,但是这些解决方案对我没用。

为什么我会遇到错误,解决方案是什么。

开源:phpseclib 错误:Bellow Error

Warning: unpack() [function.unpack]: Type C: not enough input, need 1, have 0 in \Net\SSH2.php on line 1469

Warning: extract() expects parameter 1 to be array, boolean given in \Net\SSH2.php on line 1469

https://github.com/phpseclib/phpseclib/blob/master/phpseclib/Net/SSH2.php#L1538

2 个答案:

答案 0 :(得分:0)

你的1469号线上有什么?您链接的版本在第1469行显示:

while ($this->decrypt_block_size > strlen($iv)) {

您的链接是第1538行,即:

            break;

如果你可以在前后发布三条线,那就太好了。

谢谢!

答案 1 :(得分:0)

我知道这是一个较旧的问题并且它被评级低,但我实际上遇到了同样的错误。它间歇性地发生,所以很难排除故障。我的错误是引用 \ Net \ SSH2.php 的第2127行。这是该行,加上一些周围的行:

    2121 $response = $this->_get_binary_packet();
    2122 if ($response === false) {
    2123    user_error('Connection closed by server');
    2124    return false;
    2125 }

    2127 extract(unpack('Ctype', $this->_string_shift($response, 1)));

    2129 switch ($type) {
    2130    case NET_SSH2_MSG_USERAUTH_PASSWD_CHANGEREQ: // in theory, the password can be changed
    2131        if (defined('NET_SSH2_LOGGING')) {

这是我在登录后用于将文件从外部服务器复制到我自己的语法:

$sftp->get('/remote/file/path/file.csv', 'myfile.csv');

这是指向页面的链接:https://files.maf.org/mp/forms/ChangePL.php

实际上,该页面无法直接访问,但通过https://www.maf.org/change

在iframe内部访问

我会说我在去直接链接时从未产生错误;只能通过iframe从父页面访问它。为什么会这样?