PHP работающие функции изображения теперь дают все черные изображения - PullRequest
1 голос
/ 04 февраля 2020

Я использовал этот код в течение многих лет без проблем. Недавно сервер моего клиента был обновлен с PHP 5 до PHP 7, что привело к поломке множества элементов. Я думал, что все это было решено, но это все еще сохраняется.

Вот моя функция.

function imageupload($filearray, $maxsize=0, $itemid=0){
    $validtype=1;
    $avalidtype=0;


$randfilename=sha1(microtime().rand(0,99999));

global $uploadDir;
global $dbh;


$fileid=0;
if ( (is_uploaded_file($filearray['tmp_name'])) && ($validtype==1)) {
    $src=$filearray['name'];
        $randfilename.=".jpg";
    $file_name = $uploadDir . $randfilename;
$file_name = stripslashes($file_name);
$file_name = str_replace("'","",$file_name);
    copy($filearray['tmp_name'],$file_name);

    if(preg_match('.jpeg',$src)||preg_match('.jpg',$src)) {
        $src=imagecreatefromjpeg($filearray['tmp_name']);
    }
    elseif(preg_match('.png',$src)) {   
    $src = imagecreatefrompng($filearray['tmp_name']);   
    }  

    $src2=$file_name;
    list($width,$height)=getimagesize($src2);

    $thumbsize=getThumbSize($width, $height, 450);
    $newwidth=$thumbsize[0];
    $newheight=$thumbsize[1];
    $awidth=$width;
    $aheight=$height;
    $new_name = $uploadDir .  $randfilename;
    $tmp= imagecreatetruecolor($newwidth,$newheight)
    or croak("Cannot Initialize new GD image stream");
    //  list($twidth,$theight)=getimagesize($tmp);
    imagecopyresampled($tmp,$src,0,0,0,0,$newwidth,$newheight,$width,$height); 
    imagejpeg($tmp,$new_name,100);
    imagedestroy($tmp);

}//end function

Я подтвердил, что передаваемый массив файлов заполнен достоверными данными. Я подтвердил, что функция изменения размера работает правильно. Я проверил, что подпапка, в которой должны быть сохранены измененные изображения, имеет соответствующие разрешения (я даже установил его и родительскую папку на 777).

Неважно, если я загружу JPEG или PNG, я все еще получаю пустые черные ящики (правильных размеров). Это работало безупречно в PHP 5 - и фактически работает на нескольких других серверах.

Что очевидного мне не хватает?

...