Я не могу загрузить изображения на публичный путь в Shared Server Laravel 5.5

У меня есть проект, размещенный на общем сервере в Blue Host, и в методе сохранения и обновления AdminPostController у меня есть функция для сохранения изображений в public_path, но при попытке сохранить его генерируется следующая ошибка:

Intervention\Image\Exception\NotWritableException
Can't write image data to path (/home4/directoryname/public/directoryname/uploads/posts/1516313973.jpg)

Это мой магазин метод:

public function store(Request $request)
{
$posts = new Post();
$posts->title           = $request->input('title');
$posts->slug            = str_slug($request->get('title'));
$posts->content         = $request->input('content');
$posts->category_id     = $request->input('category_id');
$posts->user_id         = $request->input('user_id');
$posts->blockquote      = $request->input('blockquote');
$posts->blockquote_sign = $request->input('blockquote_sign');
$posts->save();

// Handle the client upload image id avatar
if($request->hasFile('avatar')){
$avatar = $request->file('avatar');
$filename = time() . '.' . $avatar->getClientOriginalExtension();
Image::make($avatar)->resize(500, 300)->save( public_path('uploads/posts/' . $filename ) );

$posts->avatar = $filename;
$posts->save();
}

return redirect()->route('contenido.index')
->with('success','Publicación creada correctamente!!!');
}

Это мой метод обновления:

public function update(Request $request, $id)
{
$updated = Post::findorFail($id);

$post = $request->all();

$updated->fill($post)->save();

if($request->hasFile('avatar')){
$avatar = $request->file('avatar');
$filename = time() . '.' . $avatar->getClientOriginalExtension();
Image::make($avatar)->resize(500, 300)->save( public_path('uploads/posts/' . $filename ) );

$updated->avatar = $filename;
$updated->save();
}

return redirect()->route('contenido.index')
->with('success','Publicación actualizada correctamente!!!');
}

Это мой ресурс маршрута для этих методов:

Route::resource('contenido', 'Admin\AdminPostController');

Я читал в разных местах, и в данный момент я не нашел решения, кто-то может мне помочь?

Так устроены файлы на сервере.

введите описание изображения здесь

1

Решение

Laravel 5 по умолчанию использует общую папку в качестве домашнего каталога, в то время как мой сервер использует другой. Поэтому я установил альтернативный домашний каталог.

Мне просто нужно было выполнить следующие действия:

1 — Отредактируйте файл index.php, расположенный в общей папке вашего проекта Laravel 5.

2 — Найти следующую строку:

$app = require_once __DIR__.'/../bootstrap/app.php';

3 — Под этой строкой добавьте следующие строки:

$app->bind('path.public', function() {
return __DIR__;
});

4 — Теперь переименуйте публичный каталог вашего проекта в public_html.

Приведенное выше редактирование вашего файла index.php заставит ваш проект Laravel использовать непосредственный родительский каталог этого файла в качестве общедоступного каталога для вашего проекта.

Вы можете найти больше в этой публикации:
https://laracasts.com/discuss/channels/general-discussion/where-do-you-set-public-directory-laravel-5

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector