laravel upload 软链接 ,和 直接让文件放在 public 下,有什么区别么?这么做是为了什么?

php artisan storage:link

laravel upload 软链接 ,和 直接让文件放在 public 下,有什么区别么?这么做是为了什么?
//: <> (对待提问越认真,就越容易得到答复。)
//: <> (对待提问越认真,就越容易得到答复。)
//: <> (对待提问越认真,就越容易得到答复。)
//: <> (重要的事情说三遍!)

1. 运行环境

1). 当前使用的 Laravel 版本?

2). 当前使用的 php/php-fpm 版本?

PHP 版本:

php-fpm 版本:

3). 当前系统

4). 业务环境

5). 相关软件版本

2. 问题描述?

3. 您期望得到的结果?

4. 您实际得到的结果?

《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
最佳答案

没区别,纯粹就是框架自己定义的,什么安全那都是胡扯

3年前 评论
讨论数量: 31

更多的是安全问题,storage目录程序可能需要 r w x 权限,如果放置到 public 下,用户恶意上传,亦或者框架或第三方包有严重漏洞,那么这里就会有 w x 风险。

通过软链方式,可以把 public目录下的静态资源,控制为仅有 r 权限

3年前 评论
忆往昔弹指间 (作者) 3年前
zion_xayts_com (楼主) 3年前
zion_xayts_com (楼主) 3年前
忆往昔弹指间 (作者) 3年前
zion_xayts_com (楼主) 3年前
忆往昔弹指间 (作者) 3年前
zion_xayts_com (楼主) 3年前
zion_xayts_com (楼主) 3年前
zion_xayts_com (楼主) 3年前
zion_xayts_com (楼主) 3年前
zion_xayts_com (楼主) 3年前
zion_xayts_com (楼主) 3年前

Storage 和 Public 文件夹做软连接是因为:

Laravel 框架中文件系统 Storage 本地存储是对项目中 storage/app 文件夹进行读写,但是这个文件夹并不对外访问。所以要做软连接,让 /public 来访问 storage/app/public 文件夹的资源。

文件存储《Laravel 9 中文文档》

3年前 评论
zion_xayts_com (楼主) 3年前
MArtian (作者) 3年前
zion_xayts_com (楼主) 3年前
MArtian (作者) 3年前
zion_xayts_com (楼主) 3年前
MArtian (作者) 3年前
MArtian (作者) 3年前
zion_xayts_com (楼主) 3年前
zion_xayts_com (楼主) 3年前
MArtian (作者) 3年前

但是,放到 public 下 就对外访问了,软连接的效果和直接放到 public 下是一样的啊

3年前 评论
laravel_peng

应该有这几个方面:

  1. 减少 public 文件夹下文件的混乱度, 统一放到 storage 下,一个软连命令执行后,Public 下也就多了一个文件夹。
  2. storage 是 Laravel 框架资源文件存储的主要文件夹。
  3. 这里的资源,可以框架自己可见,也可以被公开可见。
  4. 需要公开的资源就用 public 驱动,不需要就用 local 或其他。
  5. 约定俗成 - 「Convention Over Configuration」,优先选择框架提倡的做法,不过度配置;
  6. 不过人家也开放了配置项,你可以自定义一些文件存储路径。
3年前 评论
leo

可以不用软链,只需要把 config/filesystems.phpdisks.public.root 改成 public_path('upload') 即可,只不过你需要自己建一下这个文件夹

3年前 评论

更多的是安全问题,storage目录程序可能需要 r w x 权限,如果放置到 public 下,用户恶意上传,亦或者框架或第三方包有严重漏洞,那么这里就会有 w x 风险。

通过软链方式,可以把 public目录下的静态资源,控制为仅有 r 权限

3年前 评论
忆往昔弹指间 (作者) 3年前
zion_xayts_com (楼主) 3年前
zion_xayts_com (楼主) 3年前
忆往昔弹指间 (作者) 3年前
zion_xayts_com (楼主) 3年前
忆往昔弹指间 (作者) 3年前
zion_xayts_com (楼主) 3年前
zion_xayts_com (楼主) 3年前
zion_xayts_com (楼主) 3年前
zion_xayts_com (楼主) 3年前
zion_xayts_com (楼主) 3年前
zion_xayts_com (楼主) 3年前

如果 public upload 目录 不给777权限呢?
这样 storage upload 的 软连接,和 public upload 是不是就没有区别了?

3年前 评论

config/filesystems.php 除了安全,还是为了让开发者可以自己控制哪些资源目录对外访问

'links' => [
        public_path('storage') => storage_path('app/public'),
 ],
3年前 评论

没区别,纯粹就是框架自己定义的,什么安全那都是胡扯

3年前 评论

个人觉得是为了方便管理,将用户资源和系统资源分开,在做迁移或共享的时候比较方便。

3年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!