2016-05-07 2 views
1

Я использую загружаемую форму для загрузки изображений. Маленькое изображение, как < 4mb будет работать. Но если я загружу изображение с размером файла, например 5.7MB, он ничего не делает. Он просто не загружает файл. Я много искал, но не мог понять. Я думаю, что проблема имеет дело с этим кодом: функцияVerot class.upload.php загрузка больших файлов

case 'png': 
         if (!function_exists('imagecreatefrompng')) { 
          $this->processed = false; 
          $this->error = $this->translate('no_create_support', array('PNG')); 
         } else { 
          echo $this->file_src_pathname; 
          echo $this->log; 
          echo $this->error; 
          echo $image_src = @imagecreatefrompng($this->file_src_pathname); 
          if (!$image_src) { 
           $this->processed = false; 
           $this->error = $this->translate('create_error', array('PNG')); 
          } else { 
           $this->log .= '- source image is PNG<br />'; 
          } 
         } 
         break; 

@imagecreatefrompng ($ this-> file_src_pathname) является то, что часть кода, где мой код брейки. Он ничего не выводит после этого кода, за исключением случаев, когда я прокомментирую это. Я уже изменил свой предел памяти на 256 М и загрузил файл на 64М. Имя файла установлено. Я понятия не имею, почему он только ломает мой код, когда он имеет дело с большими файлами. У кого-нибудь из вас есть идея?

код на странице загрузки файла:

// форма обработки

включают ('../ включает/class.upload.php');

$files = array(); 
foreach ($_FILES['my_field'] as $k => $l) { 
    foreach ($l as $i => $v) { 
     if (!array_key_exists($i, $files)) 
      $files[$i] = array(); 
     $files[$i][$k] = $v; 
    } 
} 

foreach ($files as $file) { 
if(!empty($file)){ 

$handle = new Upload($file, 'nl_NL'); 

      if (!file_exists("../classified_images/$adid")) 
    mkdir("../classified_images/$adid", 0777); 

     $tag_code_p = generatePassword(25); 

     if ($handle->uploaded) { 
     $oriname = $handle->file_src_name; 
     $handle->mime_magic_check = true; 
     $handle->allowed = array('image/*'); 
     $handle->image_convert = 'jpg'; 
     $newname = $adid."_big_".$tag_code_p; 
     $handle->file_new_name_body = $newname; 
     $handle->image_resize   = true;   
     $handle->image_ratio_fill  = true; 
     $handle->image_y    = 600; 
     $handle->image_x    = 800; 
     $handle->image_background_color = '#FFFFFF'; 

// // теперь мы запускаем процесс загрузки. То есть скопировать загруженный файл // // из его временного местоположения в нужное место // // Это может быть что-то вроде $ handle-> Process ('/ home/www/my_uploads /'); $ handle-> Process ("../ classic_images /");

 // we check if everything went OK 
     if ($handle->processed) { 

     $handle->image_convert = 'jpg'; 
     $newnamesmall =$adid."_small_".$tag_code_p; 
     $handle->file_new_name_body = $newnamesmall; 
     $handle->image_resize   = true;   
     $handle->image_ratio_fill  = true; 
     $handle->image_y    = 94; 
     $handle->image_x    = 125; 
     $handle->image_background_color = '#FFFFFF'; 

     // now, we start the upload 'process'. That is, to copy the uploaded file 
     // from its temporary location to the wanted location 
     // It could be something like $handle->Process('/home/www/my_uploads/'); 
     $handle->Process("../classified_images/"); 

     $handle->clean(); 
       //inserten in database 
    $sql_foto_insert = "insert into photos 
       (adid, photosmall, photo) 
       values 
       ('$adid', '$newnamesmall.jpg','$newname.jpg')"; 
    $foto_result = mysql_query($sql_foto_insert); 

      // everything was fine ! 
      //$msg .= $oriname.' '.LANG_FOTOS_SAVED.'<br />'; 
      $allok = 1; 

     } else { 
      // one error occured 
      $msg .= $handle->error . '<br />'; 
     } 

    } 
+0

может быть несколько вещей. Если вы работаете на своей машине и внесли изменения в системные файлы, перезапустили ли вы все службы после? Или, если вы пытаетесь сохранить изображение в виде BLOB, оно может быть слишком маленьким, попробуйте MEDIUMBLOB или LONGBLOB. Посмотрите, возможно ли что-то из использования http://php.net/manual/en/function.error-reporting.php и http://php.net/manual/en/function.mysql-error.php –

ответ

1

Это может быть вызвано проблемами конфигурации. Поскольку это происходит для файлов> определенного размера, я чувствую, что это может быть связано с настройками php ini.

Проверьте upload_max_filesize и post_max_size в настройках php ini. Они могут быть установлены на 4 МБ. Вы можете увеличить эти значения, чтобы они работали.

Если вы находитесь в среде виртуального хостинга, где вы не можете редактировать PHP INI, вы можете добавить их в .htaccess файл следующим образом:

php_value upload_max_filesize 7M 
php_value post_max_size 7M 

Кроме того, вы должны удалить @ от вашей функции, чтобы увидеть, что ошибка является. Подавление ошибок путем добавления @ - это плохая идея при разработке/отладке.

Кроме того, если вы находитесь на локальном компьютере или собственном сервере-разработчике, откройте apache error_log и проверьте последние несколько строк, чтобы узнать, что такое ошибка. Если вы находитесь на стороннем сервере, большинство панелей управления предоставляют интерфейс для просмотра журнала ошибок.

+0

OP состояния: * «Я уже изменил свой предел памяти на 256 М и загрузил файл на 64М». * –

+0

@ Fred-ii- 'post_max_size' все еще может быть релевантным – raidenace

 Смежные вопросы

  • Нет связанных вопросов^_^