【问题标题】:Using storage_path from another Laravel app使用另一个 Laravel 应用程序的 storage_path
【发布时间】:2020-02-04 08:35:09
【问题描述】:

我有一个应用程序使用两个不同的 Laravel 应用程序与同一个数据库通信。 App 1 称为 BUILDER,App 2 称为 VIEWER。在生产中,我使用 S3 存储在应用程序中提交的文件。对于本地开发,我使用 BUILDER 中的 storage/app/public 文件夹。

本地开发设置是 BUILDER 在 localhost:8000 上运行,VIEWER 在 locahost:8001 上运行

现在我的问题来了。在生产中,两个应用程序都使用相同的 S3 存储桶进行存储。所以不知何故,我需要为本地开发进行类似的设置。

BUILDER 工作正常,从 storage/app/public 文件夹上传和读取其文件,其中 FILESYSTEM_DRIVER=public in .env

查看器也可以正常读取这些文件,在我在配置中添加新磁盘后创建正确的 URL(在 .env 中将 BUILDER_URL 设置为 localhost:8000,这是 BUILDER 的 URL)

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

但是...我需要以某种方式也能够从 VIEWER 应用程序上传文件,这些文件最终应该与 BUILDER 位于同一存储文件夹中。

所以在我的 VIEWER 应用程序中,我希望我的 builder_public 磁盘是这样的:

'builder_public' => [
            'driver' => 'local',
            'root' => builder_storage_path('app/public'), // here 
            'url' => env('BUILDER_URL') . '/storage',
            'visibility' => 'public',
    ],

有什么方法可以在两个独立的 Laravel 应用程序之间共享 storage/app 文件夹吗?

【问题讨论】:

    标签: php laravel laravel-5 storage


    【解决方案1】:

    是的,你可以。如果您使用的是 Linux 服务器,请尝试以下命令

    ln -s SOURCE_FOLDER DESTINATION_FOLDER
    

    它将创建文件夹快捷方式,但您的两个应用程序仍将使用相同的位置(DESTINATION_PATH)

    如果您使用不同的服务器,请尝试mount 命令。

    【讨论】:

    • 谢谢。这是一个很好的解决方案。然而,我更愿意通过应用程序的配置找到一种方法。许多开发人员正在许多不同的平台上致力于此。
    • 我最终添加了另一个环境变量,开发人员可以在其中将本地路径添加到存储文件夹。然后在文件系统数组中使用此变量。但无论如何我都会将此标记为正确答案,因为它对于其他情况非常有用。
    猜你喜欢
    • 2018-01-20
    • 1970-01-01
    • 2018-03-24
    • 1970-01-01
    • 2021-09-22
    • 2015-04-05
    • 1970-01-01
    • 1970-01-01
    • 2023-02-06
    相关资源
    最近更新 更多