2013-10-09 6 views
0

으로 사용자의 이미지를 업로드하고 전체 크기 이미지 업로드가 완료되면 압축 된 복사본을 만들어 표시 할 미리보기 이미지로 사용합니다. 13-14MB보다 큰 파일을 업로드하려고 할 때를 제외하고 모두 정상적으로 작동합니다. 이보다 큰 파일의 경우 원래의 전체 크기 파일이 서버에 저장되지만 축소판은 생성되지 않습니다.PHP - 업로드 후 14MB 플러스 파일의 압축 이미지를 저장할 수 없습니다.

업로드 및 압축에 대한 나의 코드는 다음과 같습니다

function compress_image($source_url, $destination_url, $quality) { 
    $info = getimagesize($source_url); 
    if ($info['mime'] == 'image/jpeg'){$image = imagecreatefromjpeg($source_url);} 
    else if ($info['mime'] == 'image/gif'){$image = imagecreatefromgif($source_url);} 
    else if ($info['mime'] == 'image/png'){$image = imagecreatefrompng($source_url);} 
    imagejpeg($image, $destination_url, $quality); 
    return $destination_url; 
} 


if(isset($_POST['folder'])){ 
    $filename = $_SERVER['HTTP_X_FILE_NAME']; 
    $final_img = $_SESSION['dir']."/".$_SESSION['folder']."/".$filename; 

    // UPLOAD FULL IMAGE 
    if (file_put_contents($final_img, file_get_contents('php://input'))){ 

    // CREATE COMPRESSED THUMBNAIL 
    if(compress_image($final_img, $_SESSION['dir']."/".$_SESSION['folder']."/thumbs/".$filename, 50)){ 
     // continue 
    } 
    else{ 
     // error 
    } 

} 
else { 
    // no post 
} 

내가 원래 내가 심지어 내 php.ini 파일에 다음까지 여러 가지 구성을 시도 그래서 포스트 또는 메모리 한계로 인한라고 생각 (그리고이 phpinfo()을 사용하여 값을 확인했지만 업데이트 됨) 다시 운이 없습니다. 모든 분류

post_max_size = 1G 
upload_max_filesize = 1G 
memory_limit = 1G 

답변

0

, 루트에 php.ini 파일이이 있다는 하위 디렉토리에 사용되지 않은 것 같다 지금 작동 아래와 같은 파일에 자신을 설정하여 :.

ini_set('memory_limit','1G'); 
ini_set('post_max_size','1G'); 
ini_set('upload_max_filesize','1G'); 
+0

버그 사용자가 거대한 이미지를 업로드하려고 시도 할 때 서버가별로 만족스럽지 않고 압축이 실패하는 것처럼 매우 위험합니다. 아마도 더 낮은 업로드 최대 파일 크기를 정의해야합니다. – COil

+0

안녕하세요, 미안 해요 내가 분명히 했어야 - 난 단지 작동하지 않는 것을 보여주기 위해 이러한 큰 값을 사용했다 - 지금은 실제 PHP 파일에서 낮은 값을 사용했습니다 –