繁体   English   中英

phpseclib sftp put耗尽了1 GB +文件的内存

[英]Phpseclib sftp put runs out of memory with 1 GB+ files

我正在尝试使用phpseclib的sftp put方法传输大型zip文件。 小于1 GB的文件可以顺利传输。 但是,较大的文件在传输过程中达到1 GB标记后很快就会失败。

我收到此PHP错误:

"PHP Fatal error:  Out of memory (allocated 89653248) 
(tried to allocate 3717163274 bytes) in 
../lib/phpseclib/Net/SSH2.php on line 1553".   

码:

require_once('phpseclib/Net/SFTP.php');
require_once('phpseclib/Crypt/RSA.php');

$sftp = new Net_SFTP($host);
$key = new Crypt_RSA();
$key->loadKey(file_get_contents($privatekey));
$sftp->login($username, $key);

$sftp->put($remotefile, $localfile, NET_SFTP_LOCAL_FILE);

我的php.ini中的memory_limit设置设置为-1。 还有其他可能导致此限制的PHP设置吗? 或phpseclib库中的任何设置可能有帮助?

您正在运行phpseclib的超旧版本。 您所指的1.21 / 1.46版本是通过CVS关键字$ Id:$填充的,并且phpseclib多年来没有使用CVS。

使用phpseclib的最新发行版(相对于单个文件提交版本)为0.2.1,该版本的最后提交于2010年4月:

https://github.com/phpseclib/phpseclib/blob/0.2.1/phpseclib/Net/SFTP.php#L51

将其与0.2.2版本中没有CVS keyword $Id: $东西进行对比:

https://github.com/phpseclib/phpseclib/blob/0.2.2/phpseclib/Net/SFTP.php#L48

phpseclib当前为0.3.7。 自0.2.1(0.2.2、0.3.0、0.3.1、0.3.5、0.3.6和0.3.7)以来,已经有6个版本发行,因此请尝试升级

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM