我試圖使用phpseclib的sftp put方法傳輸大型zip文件。低於1 GB的文件傳輸沒有任何問題。但是,在傳輸過程中達到1 GB標記後,較大的文件很快就會失敗。Phpseclib sftp提出用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庫中的任何設置可以幫助?
你在使用32位PHP嗎?你正在試圖分配3.7g的內存。由於各種原因,32位程序可以在一個塊中分配的最多是〜3gig,具體取決於某些操作系統的調整等等。 –
@MarcB這是一個真實的陳述,但不是特別有用。 SFTP處理文件的過程不需要將整個內容一次讀入內存。 –
您使用的是哪種版本的phpseclib? –