Загрузка аватарок через /tmp - баг или фича? [решено]

Главные вкладки

Аватар пользователя AnNik AnNik 23 июня 2010 в 7:47

На новом хостинге столкнулся с тем, что упорно не хотят грузиться аватарки. При загрузке выдается сообщение "Указанный файл pict.jpg не может быть загружен. Разрешены только JPEG, PNG и GIF изображения."

В логах при этом наблюдается следующее:
---
is_file() [function.is-file]: open_basedir restriction in effect. File(/tmp/php6JVfAe) is not within the allowed path(s): (/path/to/user/homedir:.) в файле /path/to/user/homedir/public_html/site.ru/includes/image.inc в строке 117.
---

При детальном разборе ситуации оказалось, что у хостера прописан open_basedir (/path/to/user/homedir:.), а Друпал упорно пытается загружать аватарки через папочку /tmp в корне сервера. Никакие ухищрения с настройками временной папки в admin/settings/file-system не помогли, прописывал туда и /tmp, и tmp (без слеша), и /path/to/user/homedir/public_html/site.ru/tmp - все бесполезно, друпал упорно пытается грузить аватарки именно через /tmp в корне сервера...
При этом через upload и через imce файлы загружаются нормально.

Вопрос, собственно, в сабже: что это, баг или фича? И что сейчас делать? Крайне маловероятно, что хостер согласиться открыть /tmp в корне сервера, убрать open_basedir и т.п...
PS. Сменить хостера и хакать ядро Друпала не предлагать;)

Комментарии

Аватар пользователя xxandeadxx xxandeadxx 23 июня 2010 в 8:02

"AnNik" wrote:
И что сейчас делать?

создать папку temp, дать ей права на запись и в admin/settings/file-system прописать полный путь до этой папки

Аватар пользователя AnNik AnNik 23 июня 2010 в 8:05

"xxandeadxx" wrote:
создать папку temp, дать ей права на запись и в admin/settings/file-system прописать полный путь до этой папки

Так и делал, не помогло...

Аватар пользователя AnNik AnNik 23 июня 2010 в 10:21

"sergeir" wrote:
Найдите строчку upload_tmp_dir, там указан путь к временной папке хостинга

Да, есть такая...
там написано: /path/to/user/homedir/tmp
Ее и прописать как "временную папку" в admin/settings/file-system ? Попробую...

P.S. Кстати, файлик info.php делать не обязательно, достаточно под админом зайти на страничку http://сайт.ru/admin/reports/status/php

Аватар пользователя sergeir sergeir 23 июня 2010 в 10:26

"AnNik" wrote:
P.S. Кстати, файлик info.php делать не обязательно, достаточно под админом зайти на страничку http://сайт.ru/admin/reports/status/php

Интересно, не знал об этом )))

Аватар пользователя kosilko kosilko 23 июня 2010 в 12:40

если проблема в open_basedir то имеет смысл попробовать поменять open_basedir через .htaccess или php.ini или в php-коде через ini_set()

Аватар пользователя AnNik AnNik 23 июня 2010 в 13:23

"kosilko" wrote:
если проблема в open_basedir то имеет смысл попробовать поменять open_basedir через .htaccess или php.ini или в php-коде через ini_set()

Что-то сомневаюсь, что прав хватит... зачем тогда хостеру делать такие настройки, если любой пользователь может так легко их обойти?:)

Да и вопрос-то не столько в этом... Рецепт sergeir еще не пробовал, руки не дошли, но если не поможет, то получается, что выплыл принципиальный баг Друпала... вот только неужто до меня никто на него не напарывался? о_О

Аватар пользователя kosilko kosilko 23 июня 2010 в 13:28

"AnNik" wrote:
Что-то сомневаюсь, что прав хватит

чем черт не шутит? У меня был случай с возможностью изменять директиву auto_prepend_file на бесплатном хостинге, не говорю уж о прочтении содержимого этого инклюда средствами PHP. Пароли админские к БД кстати там хранились -) Рекламу с помощью него подрубали.