在 Laravel 5.1 中使用 .env 设置存储路径

Posted

技术标签:

【中文标题】在 Laravel 5.1 中使用 .env 设置存储路径【英文标题】:Storage path set using .env in Laravel 5.1 【发布时间】:2015-08-27 01:31:38 【问题描述】:

我想使用.env 文件在 Laravel 5.1 中配置存储路径。我的bootstrap/app.php 看起来像这样:

<?php
$app = new \Illuminate\Foundation\Application(
    realpath(__DIR__.'/../')
);
$app->useStoragePath(getenv('STORAGE_PATH'));

.env 文件中的相关行是:

STORAGE_PATH=/var/www/storage

这不起作用。我发现 Dotenv 库是在 处理引导程序之后初始化的,因此 .env 变量在 bootstrap.php 中不可用。

是否有其他地方可以设置存储路径并且.env 变量可用?

【问题讨论】:

也许这会有所帮助:mattstauffer.co/blog/extending-laravels-application - 您可以将路径换成env(...)。不过还没有测试过,所以不确定env 是否准备好了。 【参考方案1】:

config/filesystems.php你可以设置你的存储路径。尝试在那里设置您的存储路径,看看它是否有效。请注意,下面的示例是我对您的 config/filesystems.php 外观的建议。不要介意s3设置。这是我项目的一部分。

记得从app.php中删除$app-&gt;useStoragePath(getenv('STORAGE_PATH'));

return [

    'default' => 's3',

    'cloud' => 's3',

    'disks' => [

        'local' => [
            'driver' => 'local',
            'root'   => env('STORAGE_PATH'),
        ],

        's3' => [
            'driver' => 's3',
            'key'    => env('AWS_KEY'),
            'secret' => env('AWS_SECRET'),
            'region' => env('AWS_REGION'),
            'bucket' => env('AWS_BUCKET'),
        ],

        'rackspace' => [
            'driver'    => 'rackspace',
            'username'  => 'your-username',
            'key'       => 'your-key',
            'container' => 'your-container',
            'endpoint'  => 'https://identity.api.rackspacecloud.com/v2.0/',
            'region'    => 'IAD',
        ],
    ],
];

【讨论】:

这不会改变会话/缓存/等内容的存储路径。数据,我不认为? @ceejayoz 是的,你说得对。上面的设置仅设置文件上传的存储位置,例如 .jpg 和 .mp4。您可以在config/session.php中设置会话存储路径。 并在config/cache.php等中缓存:)

以上是关于在 Laravel 5.1 中使用 .env 设置存储路径的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Laravel 5.1 中改变环境?

Laravel 5.1:Elastic Beanstalk 工作层设置队列

Laravel 5.1 在主机上上传

在 Laravel 5.1 配置文件中读取 Vhosts 中设置的环境变量

如何在 laravel 中以编程方式即时设置 .env 值

无法在 .env 上为 Laravel Sail 设置 APP_PORT