Баг загрузки Авы и Фотки.

Опишу проблему.
На своем компе (Денвер) все вроде работало и авы загружались…
Но, как залил на хост (с включенным safemode), обнаружил ошибку. При загрузке аватарок выдавал ошибку, мол невозможно найти путь такой то… (по сути… не мог создать папку с ID пользователя в папке /uploads/images/).
«imagejpeg() [function.imagejpeg]: Unable to open '/home/.........»

Решил так.
В файле /include/function.php заменил в теле функции function func_mkdir($sBasePath,$sNewDir)
кусок:
@mkdir($sTempPath.$sDir.'/');
@chmod($sTempPath.$sDir.'/',0755);

на кусок:
@mkdir($sTempPath.$sDir);
@chmod($sTempPath.$sDir,0755);

Т.е. удалил слешы после $sDir.
Не знаю, у кого как, но мне помогло. Теперь папки создает и грузит в них авы. Не пришлось выставлять половине сайта права 0777.

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

avatar
Может это и более правильное решение, надо у себя проверить. Насчет половине сайта права 777 тут ты неправ, права 777 выставляются только тем папкам, которые указаны в readme LS, только рекурсивно на все вложенные папки и файлы.
avatar
Попробовал в галерее по аналогии сделать, поэкспериментировал с удалением кое где '/', не получилось ни фига. Вернул все обратно через chmod -R 777. neon2k напиши кроме аватарок у тебя все остальное нормально грузилось? Что то мне кажется что дело не в слешах. Хотелось бы разобраться в причинах этого явления. У меня если на папки поставить 777 без -R, т.е. на вложенные стоят права 755 вылазят такие ошибки при загрузке фотки в галерею:
Warning: getimagesize(/..../ptzonline.ru/uploads/gallery//1/30/3000_df0ba1a21d.jpg)
[function.getimagesize]: failed to open stream: No such file or directory in /.../
ptzonline.ru/include/gallery-watermark.class.php on line 8

Warning: getimagesize(/.../ptzonline.ru/uploads/gallery//1/30/3000_df0ba1a21d.jpg)
 [function.getimagesize]: failed to open stream: No such file or directory in /.../
ptzonline.ru/include/gallery.php on line 57

И в конце

Warning: Cannot modify header information - headers already sent by 
(output started at /..../ptzonline.ru/include/gallery-watermark.class.php:8)
 in /.../ptzonline.ru/include/function.php on line 181

Видно, что после gallery идет двойной слеш //, может из за этого и пишет No such file or directory…
Но почему если дать права 777 с -R такой ошибки не возникает и все работает. Мегагуру, выскажите пожалуйста свое мнение. Спасибо.

avatar
двойной слеш тут не причем.
просто при создании папки, лично на моем сервере, папка не создается через mkdir(«papka/»).
Но вот через mkdir(«papka») создаются… Как я это узнал? Создал свой php-файл, выполняющий одну единственную операцию — создание папки ТАМ где LS создать ее не может… и начал экспериментировать… И нашел вот такую фигню) Потом нашел стандартную функцию создания папки в LS и не удивился, когда там в конце добавлялось этот пресловутый слеш)
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.