В настоящее время я использую пакет Intervention Image в Laravel.
Я хочу, чтобы у пользователя была возможность загружать логотип. Пока у меня есть следующее:
public function postUpdateLogo($id) {
if(Input::file())
{
$image = Input::file('logo');
$filename = time() . '.' . $image->getClientOriginalExtension();
\Image::make($image->getRealPath())
->resize(300, 300)
->save('user/'. $id . '/' . $filename);
$user->image = $filename;
$user->save();
}
}
Но ошибка, которую я получаю при представлении:
NotWritableException в строке 143 Image.php: невозможно записать данные изображения в
путь (пользователь / 1 / 1439491280.png)
Любая помощь будет принята с благодарностью.
Я тоже сталкивался с этой проблемой, так как Стюард предположил, что вы можете написать в общую папку.
$filename = time() . '.' . $image->getClientOriginalExtension();
$path = public_path("user/".$id."/".$filename);
\Image::make($image->getRealPath())->resize(300, 300)->save($path);
Во-вторых, мне удалось исправить мою проблему (Ubuntu, Apache, установка Laravel 5), сделав Apache владельцем этой общей папки, например. :
sudo chown -R www-data:www-data /home/youruser/www/dev.site.com/public/user
добавьте правильное разрешение папки:
~$ sudo chmod 755 -R user
Не может быть идеальным решением, но поможет вам.
Редактировать — возможный второй вариант:
Проверка текущего владельца группы вашей общедоступной папки, а затем добавление пользователя apache (www-data) в эту группу может быть вторым вариантом (надеюсь, гуру согласны):
sudo adduser www-data theownergroup
Других решений пока нет …