Задать вопрос
robert_n
@robert_n

Как загрузить изображение на свой сервер?

Здравствуйте!
Пишу авторизацию через Google и появилась необходимость загрузить аватарку пользователя к себе на сервер.
Гугл присылаем мне ответ, в котором есть ссылка на аватарку:
"picture": "https://lh6.googleusercontent.com/-sdKkMmClA5M/BABBBBBBDI/AAAAABAAAQg/4SjnUI7UOsQ/s96-c/photo.jpg"

Я загружаю ее след. образом
$picture = $token_info['picture'];
$sourcecode=GetImageFromUrl($picture);
$savefile = fopen('/var/www/html/uploads/avatars/image.jpg', 'w');
fwrite($savefile, $sourcecode);
fclose($savefile);

function GetImageFromUrl($link) {
$ch = curl_init();
curl_setopt($ch, CURLOPT_POST, 0);
curl_setopt($ch,CURLOPT_URL,$link);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$result=curl_exec($ch);
curl_close($ch);
return $result;
}

При загрузке происходит ошибка, в логах :
fopen(): failed to open stream: Permission denied

Видимо проблемы с правами доступа к папке куда скачиваю файл. Почитал эту статью и добавил пользователя www-data в свою групп, которой назначил права:
sudo usermod -a -G user_main www-data
sudo chmod -R 750 /var/www/html/uploads/avatars/

Но после этого сервер теперь выдает ошибку 403:
You don't have permission to access /upload_avatar on this server.

Посоветуйте как правильно осуществлять загрузку файлов на свой сервер. Может есть статейка или пример?
  • Вопрос задан
  • 397 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 1
Не знаю как у вас там все настроено, но можете попробовать сделать следующее:
  1. Дать доступ для всего каталога
    sudo chmod -R 750 /var/www/

  2. Разрешить доступ к файлам вашего сервера

    Откройте файл apache2.conf, расположенный в
    /etc/apache2/apache2.conf

    Найдите строчку "Directory /var/www/" и напишите следующее
    <Directory /var/www/>
    	Options Indexes FollowSymLinks
    	AllowOverride All	
      Allow From All
    	Require all granted
    </Directory>


    Перезагрузил апач
    sudo service apache2 restart

    Все должно заработать

Ответ написан
Пригласить эксперта
Ответы на вопрос 2
fopen(): failed to open stream: Permission denied
это ошибка из за того что по ссылке на фото гугл выдает 404 ошибку, Not Found (изображение не найдено)

а дальше уже с правами надо играться, 777 поставьте наверника)
Ответ написан
miraage
@miraage
Старый прогер
stackoverflow.com/questions/724391/saving-image-fr...

Если так не работает - очевидно, что проблема в правах доступа. Это уже отдельный вопрос.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы