Создание изображения и переименование не работает в PHP

Мне нужно создать процесс для преобразования изображений в разные измерения и переместить их в соответствующую папку. Приведенный ниже код работает для некоторых изображений, а не для некоторых. Некоторые изображения переименовываются в подпапку, а некоторые нет. Некоторые изображения создаются, а некоторые Я выполнил модульное тестирование на одном изображении, и оно работает. Но когда я запускаю это на сервере, я сталкиваюсь с проблемой. Есть более 500 изображений, которые нужно обработать. Я не могу понять, где я ошибся.Пожалуйста помоги.

    $arr=Array();
    $arr["popup"]=Array("width"=>228,"height"=>304);
    $arr["zoom"]=Array("width"=>1500,"height"=>2000);
    $source = imagecreatefromjpeg($file_path);      
    list($width, $height) = getimagesize($file_path);

    foreach($arr as $image_type=>$dimention){   
        echo "<br> $image_type : ";
        $temp_folder_name=$image_type;
                    $temp_folder_path='../prod_images/'.$folder_name.'/'.$temp_folder_name;

        //check if directory exists if not then create else traverse
        if (!file_exists($temp_folder_path)):
            mkdir($temp_folder_path);
        else:
            $files = glob($temp_folder_path.'/'.$filename);
            if (!empty($files))){
                echo "<br/>Images exists";
                $curr_dt = date('Ymd_His');
                $dt = '_'.$curr_dt;
                $file_arr = explode(".",$filename);
                $new_filename = $file_arr[0].$dt.'.'.$file_arr[1];

                $oldname = '../prod_images/'.$folder_name.'/'.$temp_folder_name.'/'.$filename;
                echo "<br>Old Name : ".$oldname;
                $newname = '../prod_images/'.$folder_name.'/'.$temp_folder_name.'/'.$new_filename;
                echo "<br>New Name : ".$newname;
                rename($oldname,$newname);
            }else{
                echo "<br/>Images does not exist";

            }
        endif;

        $curr_width=$dimention["width"];
        $curr_height=$dimention["height"];
        echo "<br> $image_type - $curr_width - $curr_height";
        $temp_image = imagecreatetruecolor($curr_width, $curr_height);
        //imagecopyresized($temp_image,$source, 0, 0, 0, 0, $curr_width, $curr_height, $width, $height);
        imagecopyresampled($temp_image,$source, 0, 0, 0, 0,$curr_width, $curr_height, $width, $height);         
        imagejpeg($temp_image,$temp_folder_path."/".$filename); 
        imagedestroy($temp_image);

1 ответ

По моему мнению, ваш код выглядит нормально. Возможно, вам придется проверить права, которые вы получаете на ваши файлы и папки. Просто наберите ls -l на одну из вашей папки или, я не рекомендую вам sudo chmod 777 -R ./ но я думаю, что это лучший способ проверить, имеет ли ваш сервер право писать и читать в вашу папку /prod_images/.

Другие вопросы по тегам