2016-05-28 2 views
1

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

$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

Попробуйте указать соответствующий минимальный код. –

+0

Используйте абсолютный путь .. это поможет вам –

ответ

0

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

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