Новости → Проблема с загрузкой аватара пользователем
Очередной пост про MODx. Я уже подумываю о создании отдельного блога по разработке на этой cms, как-то пишется только о ней, но ничего, пока ничего менять не буду, скоро попрут посты о joomla.
В этот раз столкнулся с проблемой добавления пользователями аватаров через свой профиль с помощью сниппета WebLoginPE. При добавлении имеем следующую ошибку:
1 2 3 4 5 6 7 8 9 10 | « MODx Parse Error » MODx encountered the following error while attempting to parse the requested resource: « PHP Parse Error » PHP error debug Error: move_uploaded_file(/var/www/blabla/data/www/*******.ru/siteroot/image-06.jpg) [function.move-uploaded-file]: failed to open stream: Permission denied Error type/ Nr.: Warning - 2 File: /var/www/blabla/data/www/*******.ru/siteroot/assets/snippets/webloginpe/webloginpe.class.php Line: 2527 Line 2527 source: if (!move_uploaded_file($_FILES['photo']['tmp_name'], $userImage)) |
Отсюда мы видим, что аватар хочет загрузиться в корневую папку сайта и ен загружается потому что не имеет прав для этого действия, что вполне нормально. Менять права мы не будем, а значит нужно поменять папку для загрузки аватаров. Открываем файл webloginpe.class.php и ищем там такую строку (находится будет где-то между строками 2500-2600):
1 | $userImage = $modx->config['base_path'].strtolower(str_replace(' ', '-', basename( $_FILES['photo']['name']))); |
и заменяем ее на следующую конструкцию:
1 2 | $uploads_dir = 'assets/snippets/webloginpe/userimages/'; $userImage = $modx->config['base_path'].$uploads_dir.strtolower(str_replace(' ', '-', basename( $_FILES['photo']['name']))); |
где $uploads_dir это директория, где будут храниться аватары. Вот и все, радуем пользователей своими аватарами.
