За последние 24 часа нас посетили 21068 программистов и 1626 роботов. Сейчас ищут 888 программистов ...

unlink не удаляет изображение

Тема в разделе "Обработка изображений средствами PHP", создана пользователем d_r_v, 21 дек 2010.

  1. d_r_v

    d_r_v Активный пользователь

    С нами с:
    21 дек 2010
    Сообщения:
    3
    Симпатии:
    0
    Есть код... сначала идет проверка: изображение ли загружаемый файл; далее изображение режется и сохраняется; затем должно быть удалено исходное изображение.
    На этапе удаления, возникает ошибка "...[function.unlink]: Permission denied...

    Код (Text):
    1.  
    2.         $path_to_90_directory = 'img/avatar/'; 
    3.         if(preg_match('/[.](JPG)|(jpg)|(gif)|(GIF)|(png)|(PNG)$/',$_FILES['fupload']['name']))
    4.         {  
    5.             $filename = $_FILES['fupload']['name'];
    6.             $source = $_FILES['fupload']['tmp_name'];          
    7.             $target = $path_to_90_directory . $filename;
    8.             move_uploaded_file($source, $target);
    9.             [b]$file= fopen($path_to_90_directory.$filename,"r");
    10.             $str = fgets($file);
    11.             preg_match_all("/(JFIF)|(GIF)|(PNG)/",$str,$name);
    12.             if($name[0][0]=='JFIF' || $name[0][0]=='GIF' || $name[0][0]=='PNG')[/b]
    13.             {
    14.                 if(preg_match('/[.](GIF)|(gif)$/', $filename))
    15.                 {
    16.                     $im = imagecreatefromgif($path_to_90_directory.$filename);
    17.                 }
    18.                 if(preg_match('/[.](PNG)|(png)$/', $filename))
    19.                 {
    20.                     $im = imagecreatefrompng($path_to_90_directory.$filename);
    21.                 }
    22.                 if(preg_match('/[.](JPG)|(jpg)|(jpeg)|(JPEG)$/', $filename))
    23.                 {
    24.                     $im = imagecreatefromjpeg($path_to_90_directory.$filename);
    25.                 }
    26.                 $w = 90;
    27.                 $w_src = imagesx($im);
    28.                 $h_src = imagesy($im);
    29.                 $dest = imagecreatetruecolor($w,$w);
    30.                 if ($w_src>$h_src)
    31.                 imagecopyresampled($dest, $im, 0, 0,
    32.                 round((max($w_src,$h_src)-min($w_src,$h_src))/2), 0, $w, $w, min($w_src,$h_src), min($w_src,$h_src));
    33.                 if ($w_src<$h_src)
    34.                 imagecopyresampled($dest, $im, 0, 0, 0, 0, $w, $w, min($w_src,$h_src), min($w_src,$h_src));
    35.                 if ($w_src==$h_src)
    36.                 imagecopyresampled($dest, $im, 0, 0, 0, 0, $w, $w, $w_src, $w_src);
    37.                 $date=time();
    38.                 imagejpeg($dest, $path_to_90_directory.$date.".jpg");
    39.                 $avatar = $path_to_90_directory.$date.".jpg";
    40.                 $delfull = $path_to_90_directory.$filename;
    41.                 unlink ($delfull);
    Не могу понять в чем дело. Пробую на локальном сервере, с правами все нормально.
    Если удалить строки,
    Код (Text):
    1.             [b]$file= fopen($path_to_90_directory.$filename,"r");
    2.             $str = fgets($file);
    3.             preg_match_all("/(JFIF)|(GIF)|(PNG)/",$str,$name);
    4.             if($name[0][0]=='JFIF' || $name[0][0]=='GIF' || $name[0][0]=='PNG')[/b]
    т.е. проверку на изображение, то все работает на ура, если нет, то соответственно проблема с unlink.

    Буду благодарен за помощь.
     
  2. Devzirom

    Devzirom Активный пользователь

    С нами с:
    15 фев 2009
    Сообщения:
    463
    Симпатии:
    0
    Адрес:
    Пермь
    Поставьте права 777, и попробуйте снова
     
  3. d_r_v

    d_r_v Активный пользователь

    С нами с:
    21 дек 2010
    Сообщения:
    3
    Симпатии:
    0
    Да и удаление проходит нормально, если не делать проверку на изображение.
     
  4. Gromo

    Gromo Активный пользователь

    С нами с:
    24 май 2010
    Сообщения:
    2.786
    Симпатии:
    2
    Адрес:
    Ташкент
    d_r_v
    вместо fopen пользуйся file_exists, или же после fopen делай fclose
     
  5. d_r_v

    d_r_v Активный пользователь

    С нами с:
    21 дек 2010
    Сообщения:
    3
    Симпатии:
    0
    Gromo

    Большое спасибо!
     
  6. Вльдемар

    Вльдемар Активный пользователь

    С нами с:
    20 май 2006
    Сообщения:
    635
    Симпатии:
    0
    Адрес:
    Белхород
    Не надо перемещать, сразу создавай изображение cre


    $im = imagecreatefromgif($_FILES['fupload']['tmp_name']);