簡體   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