Laravel 存储链接不适用于生产

新手上路,请多包涵

我正在使用 storage_path 来保存我的图像,并将我的存储文件夹符号化到 public_html

 php artisan storage:link

在本地一切正常,当我上传图像时,它将上传到存储文件夹中,并且它的链接将出现在 public 文件夹中,但由于我移至实时主机和生产模式,我的图像将上传到存储文件夹中但我的 public_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;
}

任何想法?

原文由 mafortis 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 340
2 个回答

解决了

感谢您的所有帮助,我尝试在我的服务器上运行 php artisan storage:link 并且我发现我的服务器已禁用 symlink 出于安全原因。

因此,我已将所有图像上传功能更改为将图像上传到我的 public 文件夹而不是 storage 文件夹中,现在一切正常。

原文由 mafortis 发布,翻译遵循 CC BY-SA 4.0 许可协议

这个答案适用于那些仍然面临问题的人

步骤1

public 文件夹中删除 storage 链接。

第2步

授予 storage 文件夹的权限

chmod -R 775 storage/

第 3 步

创建符号链接

php artisan storage:link

原文由 Soubhagya Kumar Barik 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题