Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Глобальный вопрос по библиотеке GD, ибо уже задолбал этот вопрос... капиталь 
V
    Опции темы
mark2009
  Дата 13.3.2012, 16:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 106
Регистрация: 12.10.2009

Репутация: нет
Всего: 1



Здравствуйте всем! Описываю всё по порядку, готовьтесь, будет много кода.

Итак есть очень простой кусок кода:

Код

if (is_uploaded_file($_FILES['filename']['tmp_name']))
  {
      move_uploaded_file($_FILES['filename']['tmp_name'], FULL_UPLOAD_PATH . '/' . $cat_name . '/' . $_FILES['filename']['name']);
      resize_image(FULL_UPLOAD_PATH . '/' . $cat_name . '/' . $_FILES['filename']['name'],  $cat_name, 'resized');
      resize_image_by_width(FULL_UPLOAD_PATH . '/' . $cat_name . '/' . $_FILES['filename']['name'], $category . '_mini500', 500);
      resize_image_by_width(FULL_UPLOAD_PATH . '/' . $cat_name . '/' . $_FILES['filename']['name'], $category . '_mini100_1', 150);
      resize_image_by_width(FULL_UPLOAD_PATH . '/' . $cat_name . '/' . $_FILES['filename']['name'], $category . '_mini100_2', 150);
      resize_image_by_width(FULL_UPLOAD_PATH . '/' . $cat_name . '/' . $_FILES['filename']['name'], $category . '_mini100_3', 150);
      $_SESSION['filename']  =  $_FILES['filename']['name'];
      
    
      $query= 'INSERT INTO items (item_cat_id, item_photo, item_name) VALUES ("'.$category.'", "resized_'.$_FILES['filename']['name'].'", "'.$db->escape($object_name).'")';
      $db->query($query); 
      $message['result'] = true;
      echo 'Всё загружено';
      die();
  }


Что он делает? Проверяет, если файл загружен нормально то перемещает его по указанному месту, а к готовому файлу применяются некоторые функции.
Вот пример функции:

Код


function resize_image_by_width($source_file, $prefix, $dstwidth)
{
    if (!is_image($source_file))
    {
    return false;
    }

    global $path;
    $source_image_info = getimagesize($source_file);

    $source_width    =    $source_image_info[0];
    $source_height    =    $source_image_info[1];

    $ext = get_file_extension($source_file);
    switch ($ext)
    {
    case 'jpg':
    case 'jpeg':
      $create_function = 'imagecreatefromjpeg';
      $save_function   = 'imagejpeg';
      $extension = 'jpg';
    break;
    
    case 'gif':
      $create_function = 'imagecreatefromgif';
      $save_function   = 'imagegif';
      $extension = 'gif';
    break;

    case 'png':
      $create_function = 'imagecreatefrompng';
      $save_function   = 'imagepng';
      $extension = 'png';
    break;

    default:
      $create_function = '';
      $save_function   = '';
      $extension = '';
    break;
    }

    
    if ($dstwidth < 10)
    {
    return false;
    }

    $ratio = $dstwidth / $source_width;
    $dstheight = $source_height * $ratio;

    $source_image = $create_function($source_file);

    $dest_image = imagecreatetruecolor($dstwidth, $dstheight);
    imagecopyresampled($dest_image, $source_image, 0, 0, 0, 0, $dstwidth, $dstheight, $source_width, $source_height);
    $save_function($dest_image, $path . $prefix . '_' . get_pure_file_name($source_file)  . '.' . $extension);
    imagedestroy($dest_image);
}



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

Код


Warning:  imagejpeg() [<a href="function.imagejpeg">function.imagejpeg</a>]: Unable to open '6_mini500_shop.jpg' for writing: Permission denied in <b>XXX</b> on line 174


Думаю, что суть ошибки понятна. Функция просто не может сохранить файл из-за ошибки прав доступа. Да, вместо XXX (я нарочно убрал полный путь к файлу из соображений безопасности) прописано полное имя того php-файла, где эта функция определена.
[/code]

Папка и подпапка, в которую я пытаюсь загрузить рисунки, имеют полные права 0777. Владелец этих папок - пользователь, под которым я захожу на ftp сервер. 

Вопрос: почему недостаточно прав доступа для работы функций? Что предпринять в данном случае?
PM MAIL WWW ICQ Skype   Вверх
Fortop
Дата 13.3.2012, 16:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 1
Всего: 42



Цитата(mark2009 @  13.3.2012,  16:03 Найти цитируемый пост)
Да, вместо XXX (я нарочно убрал полный путь к файлу из соображений 

Цитата(mark2009 @  13.3.2012,  16:03 Найти цитируемый пост)
Папка и подпапка, в которую я пытаюсь загрузить рисунки, имеют полные права 0777

А ХХХ совпадает с папкой и подпапкой? smile

ну и плюс проверьте на существование такого файла по этому пути и его права.


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
mark2009
Дата 14.3.2012, 06:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 106
Регистрация: 12.10.2009

Репутация: нет
Всего: 1



Fortop
Вы не поняли...

В приведённом примере файла 6_mini500_shop.jpg естественно нет. Он должен создаваться. Но он НЕ создаётся и пишет ошибку прав. ПОЧЕМУ? Когда и там и там 0777. Почему?
PM MAIL WWW ICQ Skype   Вверх
Fortop
Дата 15.3.2012, 08:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2200
Регистрация: 13.11.2007
Где: Донецк

Репутация: 1
Всего: 42



Цитата(mark2009 @  14.3.2012,  06:07 Найти цитируемый пост)
В приведённом примере файла 6_mini500_shop.jpg естественно нет

Для меня это не очевидно и не естествено.
У вас уже может быть файл с таким именем и другими правами. Отсюда и сообщение об ошибке.

Цитата(mark2009 @  14.3.2012,  06:07 Найти цитируемый пост)
Почему? 

Покажите ls -la для папки куда вы пытаетесь записать.

Добавлено через 7 минут и 16 секунд
И это php в каком режиме работает то?
safe mode не включен?


--------------------
Мир это Я.
Живее всех живых.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Extensions | Следующая тема »


 




[ Время генерации скрипта: 0.1260 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.