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


phpseclib Warning: unpack() [function.unpack]: Type C: not enough inpu

有些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

第1469行是什么?您链接到的版本在第1469行有这个:

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

链接到第1538行,即:

            break;

如果你能把前后三行也贴出来,那就太好了。

谢谢!

我知道这是一个老问题,它被降级了,但我实际上有同样的错误。它断断续续地发生,所以很难排除故障。我的错误是引用'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从父页面访问它。为什么会这样呢?