나는 CakePHP 내의 파일과 폴더로 작업하고 있습니다. 이제 모든 것이 잘 작동하고 내가 원하는 방식대로 작동합니다. 그러나 파일을 압축하면 다음과 같은 오류 메시지가 나타납니다.CakePHP에서 Zip 파일을 만들고 'bytes exhausted'오류 메시지가 나타 납니까?
Error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 240047685 bytes)
작은 파일을 압축하면 좋습니다! 나는 크기가 더 큰 지퍼가 문제가있는 것처럼 보일지라도 문제없이 약 10MB의 크기로 파일을 처리했다.
이제 내 .htaccess 파일에 다음을 추가하고 php.ini 파일을 만들었습니다.
php_value upload_max_filesize 640000000M
php_value post_max_size 640000000M
php_value max_execution_time 30000000
php_value max_input_time 30000000
사실 저는 PHP가 4GB 파일 한도로 가리키는 일부 게시물을 발견했습니다. 그럼에도 불구하고, 왜 내 zip 파일은이 파일 (약 245MB 정도)을 수행하지 않습니다.
public function ZippingMyData() {
$UserStartPath = '/data-files/tmp/';
$MyFileData = $this->data['ZipData']; //this is the files selected from a form!
foreach($MyFileData as $DataKey => $DataValue) {
$files = array($UserStartPath.$DataValue);
$zipname = 'file.zip';
$zip = new ZipArchive();
$zip_name = time().".zip"; // Zip name
$zip->open($zip_name, ZipArchive::CREATE);
foreach ($files as $file) {
$path = $file;
if(file_exists($path)) {
$zip->addFromString(basename($path), file_get_contents($path));
} else {
echo"file does not exist";
}
} //End of foreach loop for $files
} //End of foreach for $myfiledata
$this->set('ZipName', $zip_name);
$this->set('ZipFiles', $MyFileData);
$zip->close();
copy($zip_name,$UserStartPath.$zip_name);
unlink($zip_name); //After copy, remove temp file.
$this->render('/Pages/download');
} //End of function
내가 잘못 가고있는 아이디어가 있습니까? 나는 이것이 나의 코드가 아니라는 것을 언급 할 것이고, 나는 다른 것들에 그것의 비트를 발견하고 나의 프로젝트에 대한 나의 필요에 맞도록 그것을 바 꾸었습니다!
환영 모든 도움 ...
감사
글렌
.
'php_value memory_limit 256M' 또한 Suhosin과 같은 확장 기능이 설치되어있어 메모리 사용량에 제한이 있는지 확인하십시오. – ndm
나는 이것을 내 자신의 VM 내부에서 실행하고 있는데, 나는 완전한 제어권을 가지고있다. 메모리에서 기본 PHP5 파일 만 설치했다고 생각합니다. 나는이 프로젝트가 VPS에서 호스트가 될 것이라고 생각한다. 그렇지 않으면 내가 통제 할 수있는 것이 없을 것이다. 즉, 서버에 설치할 수있는 다른 것을 생각할 수 있다면, 파일 제한이 없다는 것을 확인한 다음, 가라. 바로 앞에! - 글렌 –
덕분에 php_ini 파일 상단에 'php_value memory_limit 256M'이 추가되었습니다. 그것은 작동하지 않았다, 여전히 나에게 같은 오류 메시지를 제공합니까? php.ini 파일이 작동하는지 확인하기 위해 CakePHP에서 phpinfo를 실행하는 방법은 무엇입니까? 내 파일은 어디에서 호스팅해야합니까? 그 WWW 폴더의 루트입니다, 케이크의 webroot 폴더로 이동해야합니까? 고마워 글렌. –