1기가바이트 + 파일 메모리가 실행됩니다. 1GB 미만의 파일은 문제없이 전송됩니다. 그러나 큰 파일은 전송 중에 1GB 표시에 도달하면 곧 실패합니다.Phpseclib SFTP를 넣어 내가 phpseclib의 SFTP를 <a href="http://phpseclib.sourceforge.net/sftp/examples.html#put" rel="nofollow">put</a> 방법을 사용하여 큰 zip 파일을 전송하려고
이"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의 오류가 발생합니다. 이 제한을 초래할 수있는 다른 PHP 설정이 있습니까? 또는 phpseclib 라이브러리의 모든 설정이 도움이 될 수 있습니까?
32bit PHP를 사용하고 계십니까? 3.7GB의 RAM을 할당하려고합니다. 여러 가지 이유 때문에, 32 비트 프로그램은 단일 블록에서 ~ 3gig까지 할당 할 수 있습니다. OS에 따라 약간의 수정이 있습니다. –
@MarcB 사실 진술이지만 특히 도움이되지는 않습니다. 파일을 SFTP로 처리하는 과정에서 모든 것을 한 번에 메모리로 읽을 필요는 없습니다. –
사용중인 phpseclib의 버전은 무엇입니까? –