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. 您实际得到的结果?

《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
最佳答案

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

2年前 评论
讨论数量: 31

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

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

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

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

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

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

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

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

2年前 评论
laravel_peng

应该有这几个方面:

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

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

2年前 评论

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

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

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

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

2年前 评论

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

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

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

2年前 评论

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

1年前 评论

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