【问题标题】:Images in app/public (laravel) not show in Heroku app应用程序/公共(laravel)中的图像未显示在 Heroku 应用程序中
【发布时间】:2018-01-15 01:49:14
【问题描述】:

我在 laravel 中有一个项目,其中一个部分将图像上传到服务器。图像使用文件存储和 /storage/app/public 文件夹保存。 在本地工作正常,图像看起来不错,但是当我将项目上传到 heroku 时,看不到图像。 即使在 heroku 中运行命令“php artisan storage: link”

为什么我看不到图片?我不想为此使用 AWS S3。 我会错过什么?

谢谢你..

【问题讨论】:

  • 损坏的图片链接到什么,它们应该链接到什么?
  • 图片以 Storage :: url ('file1.jpg') 显示; (site.dev/file1.jpg) 因为图片存储在/storage/app/public,这样内容对用户是不可见的,只有在需要的时候才可见。但是由于某种原因在 heroku 中这不会发生,但在本地一切正常。
  • 存储文件夹的权限是什么。这可能是问题所在。
  • “我不想为此使用 AWS S3。”好吧,你可能不得不这样做。如果不是 S3,其他一些文件存储服务。 Heroku's filesystem is ephemeral;下次您的 Dyno 重新启动时,您存储在那里的所有文件都将丢失。这种情况经常发生(至少每天一次)。
  • "即使在 heroku 中运行命令 "php artisan storage: link"" 这也不起作用,因为当您使用 heroku run 时,您正在连接到一个 新的、单独的 实例 来自网络上运行的内容。

标签: php laravel heroku amazon-s3 file-storage


【解决方案1】:

在你的 composer.json 添加:

“安装后-cmd”:[ “ln -sr 存储/应用程序/公共公共/存储” ],

【讨论】:

  • 这行得通!!!请你解释一下它实际上在做什么?
【解决方案2】:

Heroku 没有文件存储。因此,如果您要将它用于您的服务器,您需要找出另一种存储文件的方法。

【讨论】:

  • 是的,这是 Heroku 的唯一答案。您根本无法在 Heroku 上本地存储文件 - dynos 每天至少重新启动一次,每次上传到它们的每个文件都会丢失。对于不在版本控制中的任何文件,需要类似 S3 或将文件存储在数据库中的东西。
【解决方案3】:

您也可以将图像上传到公共文件夹而不是存储文件夹(这样您就不会遇到上述问题)。 为此,您需要更改app/filesystem.php中的配置

改变

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

到这里:

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

你可以这样存储文件:

$pathToFile = Storage::disk('public')->put('uploads/', $file);

现在您可以将$pathToFile 变量插入数据库!

【讨论】:

    【解决方案4】:

    我所做的对我有用:

    在你的 composer.json 添加:

    "post-install-cmd": [ "ln -sr storage/app/public public/storage" ],(如果上面的命令后面还有其他行,不要忘记逗号,) 但是你应该在脚本部分添加上面的行。

    【讨论】:

      猜你喜欢
      • 2014-02-08
      • 2014-07-30
      • 2018-07-15
      • 2018-02-02
      • 1970-01-01
      • 1970-01-01
      • 2017-05-02
      • 2019-08-01
      • 1970-01-01
      相关资源
      最近更新 更多