Перейти к публикации

Загрузка аватаров пользователей


Рекомендованные сообщения

Столкнулся с таким интересным моментом... Когда пользователь регистрируется на сайте и загружает аватар, он загружается, но в профиле пользователя или комментариях отображаются далеко не все загруженные аватары. Когда повнимательнее посмотрел папку fotos, обнаружил, что все аватары имеют разные chmod от 600 до 666, а отображаются только те, которые имеют chmod 777. Права на все папки из состава uploads выставлены правильно. После того, как я принудительно выставил на все аватары права 777, они появились в профилях пользователей. В чем может быть причина таких "скачков" в правах на файлы?

Ссылка на сообщение
Поделиться на других сайтах

скрипт принудительно ставить 666, почему разброс в правах я незнаю, в скрипт это не заложено.

Ссылка на сообщение
Поделиться на других сайтах

А как же быть? Основной массе аватаров даются права 600. Не должно же такого быть. Если я принудительно те же самые аватары сам загружаю в профиль пользователя, то все нормально, а если они сами, то такая картина не хорошая получается. Может есть какие идеи по этому поводу?

Ссылка на сообщение
Поделиться на других сайтах

Обратитесь к хостеру за этим вопросом, права по умолчанию назначает хостер. А права 600 не позволяют проводить публичный просмотр.

Ссылка на сообщение
Поделиться на других сайтах

Хостинг предлагает сделать следующее для устранения этой проблемы:

Закаченным файлам, по умолчанию выставляются права 600.

Для их изменения можно использовать php функцию chmod(), которую необходимо добавить в текст скрипта, который загружает файлы.

Необходимо в скрипте, который загружает аватары сразу после функции, которая загружает сам файл вставить функцию chmod(), которая изменит права 600 на 644 или 755. Права 777 у нас на хостинге блокируются в целях безопасности.

celsoft, подскажите, пожалуйста, можно ли сделать такой вариант, и если можно, то в каком файле и что изменить?

Ссылка на сообщение
Поделиться на других сайтах

скрипт так и делает, ставит при этом 666, или 666 тоже блокируется хостингом?

Ссылка на сообщение
Поделиться на других сайтах

Говорят, что нет, но рекомендуют для файлов устанавливать права - 644, для папок - 755. А основная масса аватаров почему получает права 600.

Изменено пользователем ower_xz
Ссылка на сообщение
Поделиться на других сайтах

Нет, но рекомендуют для файлов устанавливать права - 644, для папок - 755.

в таком случае почему тогда права у ваших автаров не меняются? скрипт это пытается сделать.

откройте engine/modules/profile.php и сделайте поиск по 0666 замените на свое в двух местах

Ссылка на сообщение
Поделиться на других сайтах

Хостинг ответил:

Смена прав на 666/777 не возымеет нужного Вам действия.

Вы можете в скрипте задать выставление прав на загруженные файлы 644. (заранее установив права 755 на папку в которую производится загрузка файлов)

Или Вы можете прислать нам путь к скрипту и мы попробуем отредактировать его для решения возникшей проблемы.

Я попробую изменить в profile.php права на 644, а на папку fotos выставлю 755. Посмотрю, будет ли результат.

Ссылка на сообщение
Поделиться на других сайтах

celsoft, а скажите, в чем разница между картинками в папке posts и fotos (кроме того, что разными модулями обрабатываются)? Ведь картинки в posts имеют необходимые права, и только в fotos они отличаются. По идее, если дело в хостинге, то тогда во всех папках права на картинки должны быть одинаковы... Или я не прав?

Тут с хостинга служба поддержки выдала предположение6

Вчера ночью я создавал профиль на Вашем сайте и загружал аватар пользователя (http://edengard.com/uploads/fotos/foto_6682.jpg)

Изначально аватар был 100х100px и его размер не изменялся. Возможно изменение прав происходит при ресайзе изображений?

У меня последние три аватара, которым выданы права 600 имеют следующие размеры:

foto_6702.jpg - 77х101

foto_6703.jpg - 101х101

foto_6708.jpg - 100х100

Административные настройки для пользователей выставлены на ограничение размера аватаров по максимуму 101х101.

Изменено пользователем ower_xz
Ссылка на сообщение
Поделиться на других сайтах

celsoft, а скажите, в чем разница между картинками в папке posts и fotos (кроме того, что разными модулями обрабатываются)?

никакой.

Тут с хостинга служба поддержки выдала предположение6

Цитата

Вчера ночью я создавал профиль на Вашем сайте и загружал аватар пользователя (http://edengard.com/uploads/fotos/foto_6682.jpg)

Изначально аватар был 100х100px и его размер не изменялся. Возможно изменение прав происходит при ресайзе изображений?

Права изменяются дважды в коде, возможно когда вы правили то изменили только в одном месте.

Ссылка на сообщение
Поделиться на других сайтах

celsoft, а скажите, в чем разница между картинками в папке posts и fotos (кроме того, что разными модулями обрабатываются)?

никакой.

Тут с хостинга служба поддержки выдала предположение6

Цитата

Вчера ночью я создавал профиль на Вашем сайте и загружал аватар пользователя (http://edengard.com/uploads/fotos/foto_6682.jpg)

Изначально аватар был 100х100px и его размер не изменялся. Возможно изменение прав происходит при ресайзе изображений?

Права изменяются дважды в коде, возможно когда вы правили то изменили только в одном месте.

Права я менял в файле дважды. Сделано было все как вы сказали.

Хостинг выдал свое решение проблемы. Они изменили код в /modules/register.php

/* 

if ($res) { 


$thumb=new thumbnail(ROOT_DIR."/uploads/fotos/".$row['user_id'].".".$type); 

$thumb->size_auto($user_group[$config['reg_group']]['max_foto']); 

$thumb->jpeg_quality($config['jpeg_quality']); 

$thumb->save(ROOT_DIR."/uploads/fotos/foto_".$row['user_id'].".".$type); 


@unlink (ROOT_DIR."/uploads/fotos/".$row['user_id'].".".$type); 


$foto_name = "foto_".$row['user_id'].".".$type; 


$db->query("UPDATE " . USERPREFIX . "_users set foto='$foto_name' where name='$user'"); 


} else $stop = $lang['reg_err_12'];*/ 

if ($res) { 


@chmod(ROOT_DIR."/uploads/fotos/".$row['user_id'].".".$type, 0644); 

$thumb=new thumbnail(ROOT_DIR."/uploads/fotos/".$row['user_id'].".".$type); 


if ($thumb->size_auto($user_group[$member_id['user_group']]['max_foto'])) { 

$thumb->jpeg_quality($config['jpeg_quality']); 

$thumb->save(ROOT_DIR."/uploads/fotos/foto_".$row['user_id'].".".$type); 

} else { 

@rename(ROOT_DIR."/uploads/fotos/".$row['user_id'].".".$type, ROOT_DIR."/uploads/fotos/foto_".$row['user_id'].".".$type); 

} 


@chmod(ROOT_DIR."/uploads/fotos/foto_".$row['user_id'].".".$type, 0644); 

$foto_name = "foto_".$row['user_id'].".".$type; 


$db->query("UPDATE " . USERPREFIX . "_users set foto='$foto_name' where name='$user'"); 


} else $stop .= $lang['news_err_12'];

Посмотрю как будет работать. Пока что вроде нормально. Права на папку photos выставлены 755, аватары имеют права 644.

Ссылка на сообщение
Поделиться на других сайтах

Да такой вариант работает нормально. Если у кого аналогичные проблемы с аватарами, то попробуйте добавить код указанный выше в файл /modules/register.php после 254 строки, а именно после

$res = @move_uploaded_file($image, ROOT_DIR."/uploads/fotos/".$row['user_id'].".".$type);
В этом же модуле найдите строки
@chmod(ROOT_DIR."/uploads/fotos/".$row['user_id'].".".$type, 0666);

и

@chmod(ROOT_DIR."/uploads/fotos/foto_".$row['user_id'].".".$type, 0666);
и замените на
@chmod(ROOT_DIR."/uploads/fotos/".$row['user_id'].".".$type, 0644);

и

@chmod(ROOT_DIR."/uploads/fotos/foto_".$row['user_id'].".".$type, 0644);

Возможно, и вам поможет.

На папку fotos можно выставить права 755.

Ссылка на сообщение
Поделиться на других сайтах

Присоединяйтесь к обсуждению

Вы можете опубликовать сообщение сейчас, а зарегистрироваться позже. Если у вас есть аккаунт, войдите в него для написания от своего имени.

Гость
Ответить в тему...

×   Вставлено в виде отформатированного текста.   Вставить в виде обычного текста

  Разрешено не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отобразить как ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

×
×
  • Создать...