Новости → Проблема с загрузкой аватара пользователем

Очередной пост про 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 это директория, где будут храниться аватары. Вот и все, радуем пользователей своими аватарами.

Я не робот.