PHP загрузить изображения формы + изменить размер через библиотеку GD.Но это не удается более 8 МБ - PullRequest
0 голосов
/ 18 сентября 2010

Я делаю php-скрипт, который получает из образа POST 4, затем хранит их и создаю библиотеку GD php.Проблема в том, что он работает только в том случае, если я загружаю 2 фотографии по 4 МБ каждая (или 4 фотографии по 2 МБ или менее; фактически максимум 8 МБ).Зачем?я проверяю значения memory_limit (64mb), upload_max_filesize (25mb) и max_file_uploads (120secs), и если я увеличиваю их, ничего не происходит.

Кажется, что массив POST полностью игнорируется: я вижу это, потому что я положилнекоторые "эхо" на PHP-скрипте.Код выше:

if(($_FILES['userfile1']['tmp_name']!="") or ($_FILES['userfile2']['tmp_name']!="") or ($_FILES['userfile3']['tmp_name']!="") or ($_FILES['userfile4']['tmp_name']!="")) {
    // JPG/JPEG, max 4mb each
    for($i=1; $i<=4; $i++) {
        if ($_FILES['userfile'.$i]['tmp_name']!="") {
            $path_parts=pathinfo($_FILES['userfile'.$i]['name']);
            if(((strtolower($path_parts['extension'])=='jpg') or (strtolower($path_parts['extension'])=='jpeg')) 
            && ($_FILES['userfile'.$i]['size']<=4194304)) {
            } else {
                $wrong=1;
            }
        }
    }

    if(isset($wrong)) {
        $abort=1;
        $messaggio="Errore - Formato delle foto non valido. Assicurati che il formato sia jpg/jpeg e che la foto non superi i 3 Megabyte";
    } else {
        mkdir("./articles/photos/".$articleid);
        mkdir("./articles/photos/thumbs/".$articleid);
        $sql="";
        for($i=1; $i<=4; $i++) {
            if ($_FILES['userfile'.$i]['tmp_name']!="") {
                $photoid=$articleid."-".$i;
                $uploaddir="./articles/photos/".$articleid."/";
                $userfile_tmp=$_FILES['userfile'.$i]['tmp_name'];   
                $userfile_name=$_FILES['userfile'.$i]['name'];

                $userfile_name=$photoid."@".trim(str_replace(" ", "", $_FILES['userfile'.$i]['name']));

                $path_parts=pathinfo($_FILES['userfile'.$i]['name']);
                $photoondb=$photoid.".".strtolower($path_parts['extension']);
                move_uploaded_file($userfile_tmp, $uploaddir.$photoondb);

                // thumbs
                $name_new_image="./articles/photos/thumbs/".$articleid."/".$photoondb;
                $file = "./articles/photos/".$articleid."/".$photoondb;

                list($actualw, $actualh, $type, $attr) = getimagesize($file);
                if(($actualw>100) or ($actualh>100)) {
                    if($actualw>$actualh) {
                        $v1=$actualw/100;
                        $width=$actualw/$v1;
                        $height=$actualh/$v1;
                    } else {
                        $v1=$actualh/100;
                        $width=$actualw/$v1;
                        $height=$actualh/$v1;
                    }
                }
                $qualita=70;
                $new_image=imagecreatetruecolor($width, $height);
                $src_image=imagecreatefromjpeg($file);
                imagecopyresampled($new_image, $src_image, 0, 0, 0, 0, $width, $height, imagesx($src_image), imagesy($src_image));
                imagejpeg($new_image, $name_new_image, $qualita);

                imagedestroy($new_image);
                imagedestroy($src_image);

                if($sql!="") $sql.=", ";
                $sql.="('$articleid', '$photoondb')";
            }
        }
    }
}

Я надеюсь, вы понимаете, что я имею в виду, более или менее:)

Ответы [ 3 ]

6 голосов
/ 18 сентября 2010

вы пропустили еще один параметр: post_max_size . по умолчанию это 8M ...

3 голосов
/ 18 сентября 2010

Есть две вещи, о которых вам нужно позаботиться: post_max_size и upload_max_filesize.Они оба core php.ini директивы .

2 голосов
/ 18 сентября 2010

Два способа решить эту проблему

  • Изменить php.ini

Чтобы это работало, мне пришлось изменить параметры

post_max_size = 8M
upload_max_filesize = 2M

to

post_max_size = 100M
upload_max_filesize = 100M
  • Добавьте приведенное ниже в ваш файл .htaccess
php_value upload_max_filesize 10M
php_value post_max_size 20M
...