0

まず第一に、「memory_limit」エラーに関するこれらの質問が何度か尋ねられており、与えられた解決策のほとんどに ini_set の変更が含まれていることを知っていますが、それは私の場合ではないと思います。

実際、私は正確に受け取っています: [2013 年 4 月 21 日 22:21:48 UTC] PHP の致命的なエラー: /home/xxx/public_html/www4/admincenter で 52428800 バイトの許容メモリ サイズが使い果たされました (16000 バイトを割り当てようとしました) /clientes/102/slides/nuevo_slide.php 20 行目

ご覧のとおり、許容されるメモリの合計サイズは、関数が割り当てようとしていたサイズを実際に超えていますが、まだ同じエラーが発生しています:\私が見ることができた限り、imagecreatefromjpeg関数に問題があるはずです(エラー行で指摘されているように: 20)

私のコードは次のとおりです。ちなみに、img2 ではなく img1 で正常に動作します。

  • img1 = 139kb、1000 x 300 ピクセル
  • img2 = 648kb、4000 x 3000 ピクセル

どちらのサイズも許容メモリを下回っています。これについてご協力いただき、誠にありがとうございます。ありがとう!

<?php ini_set("memory_limit", "100M");  ?>
<?php require_once '/home/xxx/private_html/0a/configuration.php';?>
<?php require_once '/home/xxx/private_html/102/configuration.php';?>
<?php

    $titulo = ucwords($_POST['titulo']);
    $texto = utf8_encode($texto);

    $q = "INSERT INTO slides (`id`, `titulo`, `texto`, `fecha`) VALUES (NULL, '".$titulo."', '".$texto."', CURRENT_TIMESTAMP)";
    $sql = mysql_query($q);
    $id = mysql_insert_id();

    for ($i = 1; $i < 3; $i++){
        if ($_FILES["foto"]["type"] == "image/jpeg" || $_FILES["foto"]["type"] == "image/pjpeg" ){
            if($_FILES["foto"]["type"] == "image/jpeg" || $_FILES["foto"]["type"] == "image/pjpeg"){    
                $image_source = imagecreatefromjpeg($_FILES["foto"]["tmp_name"]);                   
            }       

            if ($i == 1){
                $max_upload_width = 902;
                $max_upload_height = 289;
                $remote_file = $sld .$id."_".$max_upload_width."x".$max_upload_height.".jpg";               
            }

            if ($i == 2){
                $max_upload_width = 166;
                $max_upload_height = 67;
                $remote_file = $sld .$id."_".$max_upload_width."x".$max_upload_height.".jpg";               
            }

            imagejpeg($image_source,$remote_file,100);
            chmod($remote_file,0755);

            // get width and height of original image
            list($image_width, $image_height) = getimagesize($remote_file);
            if($image_width>$max_upload_width || $image_height >$max_upload_height){
                $proportions = $image_width/$image_height;
                if($image_width>$image_height){
                    $new_width = $max_upload_width;
                    $new_height = round($max_upload_width/$proportions);
                }else{
                    $new_height = $max_upload_height;
                    $new_width = round($max_upload_height*$proportions);
                }       

                $new_image = imagecreatetruecolor($max_upload_width , $max_upload_height);
                $image_source = imagecreatefromjpeg($remote_file);

                imagecopyresampled($new_image, $image_source, 0, 0, 0, 0, $max_upload_width, $max_upload_height, $image_width, $image_height);
                imagejpeg($new_image,$remote_file,100);
                imagedestroy($new_image);
            }   
            imagedestroy($image_source);
        }
    }

    header("Location: index.php?msg=350");
    exit();
?>
4

0 に答える 0