Проблема при загрузке изображений в фотосет

При работе на Shared хостинге возможна ситуация, когда загрузка изображений в фотосет зависает на фразе «file.png Resize...», хотя файл на сервер загрузился и все операции над ним выполнились. Эта ошибка сопровождается следующим сообщением в log-файле:
[15-Nov-2013 00:00:00] PHP Warning:  filesize() [<a href='0function.filesize0'>function.filesize0</a>]: open_basedir restriction in effect. File(/var/sites/site.ru/tmp/phpsnEaep) is not within the allowed path(s): (/var/sites/site.ru/htdocs/:.) in /var/sites/site.ru/htdocs/classes/actions/ActionPhotoset.class.php on line 267


Вызвана данная проблема одновременным действием двух источников:
1) не совсем корректной настройкой PHP, связанной с включенными директивами "open_basedir" и "upload_tmp_dir";
2) неточностью в определении размера загруженного файла в классе "ActionPhotoset".
Исправление любого из пунктов приводит к нормальной работе процесса загрузки.

Для того, чтобы исправить первый пункт достаточно:
1) Отключить использование "open_basedir" — основная проблема в том, что вероятность договориться об этом с хостером равна 0%. :)
2) Установить корректное значение директивы "upload_tmp_dir" в корневом файле ".htaccess":
php_value upload_tmp_dir /var/sites/site.ru/htdocs/tmp

Обращаю внимание, что каталог, который указывается в настройках, должен быть внутри каталога, заданного директивой "open_basedir". Проблема в том, что возможность задания директивы «upload_tmp_dir» тоже может быть отключена хостером.

Для исправление второго пункта необходимо в файле "ActionPhotoset.class.php" заменить строку
if (filesize($_FILES['Filedata']['tmp_name']) > Config::Get('module.topic.photoset.photo_max_size')*1024) {

на строку
if ($_FILES['Filedata']['size'] > Config::Get('module.topic.photoset.photo_max_size')*1024) {
Кибер Капитал — полый спектр seo услуг, от контекстной рекламы до продвижения в социальных сетях.

2 комментария

avatar
бывает аткое иногда. Но насколько я знаю, большинство здесь под LS берет VPS- ку
avatar
Я уже отправил коммит в GitHub.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.