Laravel 存储链路在生产环境中不起作用代码

2022-08-30 17:58:45

我正在使用保存我的图像,我符号我的存储文件夹到storage_pathpublic_html

php artisan storage:link

在本地一切正常,当我上传图像时,它将上传到存储文件夹中,它的链接将出现在文件夹中,但是由于我移动到实时主机和生产模式,我的图像将上传到存储文件夹中,但在我的文件夹中没有任何内容,我无法在前端获取它们。publicpublic_html/storage

代码

/config/filesystems.php

'public' => [
  'driver' => 'local',
  'root' => storage_path('app/public/'),
  'url' => env('APP_URL').'/storage',
  'visibility' => 'public',
],

.env

FILESYSTEM_DRIVER=public

controller sample

if ($request->hasFile('image')) {
  $image = $request->file('image');
  $filename = 'page' . '-' . time() . '.' . $image->getClientOriginalExtension();
  $location = storage_path('app/public/images/' . $filename);
  Image::make($image)->resize(1200, 600)->save($location);
  if(!empty($page->image)){
    Storage::delete('images/' . $page->image);
  }
  $page->image = $filename;            
}

任何想法?


答案 1

我看到这个问题已经得到解答,但我想建议另一个我发现很容易的解决方案。转到路由文件夹并注册新路由,如下所示your-app-folder/routes/web.php

Route::get('/linkstorage', function () {
    Artisan::call('storage:link');
});

然后转到您的网站,它将带您进入空白页面。就是这样。将创建存储文件夹。我希望它能帮助别人。www.example.com/linkstorage


答案 2

从公共文件夹中删除文件夹存储,并在 cron 作业中运行以下命令(一次):

ln -s /home/public_html/storage/app/public /home/dev5/public_html/public/storage

推荐