设置 Laravel 的 .env 文件位置

9

我刚刚将Laravel的一个版本发布到了我的生产服务器上。但是当我上传它时,.env文件是可读的。所以我把它上传到了站点根目录旁边的public_html/目录。

我的问题是:如何告诉Laravel .env文件的位置?当我把它放在public_html/文件夹中时,它可以正常工作,但是我该如何让它查找根目录下的文件?

6个回答

17

bootstrap/app.php 中设置环境变量路径:

$app->useEnvironmentPath($env_path);

例如,我的项目的目录结构如下:

 webapp 
 -laravel 
 -public
 -.env

自定义环境文件的路径

$app->useEnvironmentPath(
  dirname(__DIR__, 2)
);

1
你需要上传到 public_html 的是 Laravel 安装中 public 目录下的所有内容,包括任何应该对客户端可访问的 JavaScript 文件、CSS 文件或图像文件,其他所有内容都应该放在 public 目录之外。

1
正如您可以在官方文档中阅读到的那样,.env文件必须位于Laravel应用程序的根目录中。没有更改文件位置的方法(我认为也没有意义)。
此外,根文件夹不应该是公共文件夹,因为.env不应该暴露给公共访问,否则它的主要安全目标将完全丧失。

是的,但这就是我所做的,现在它找不到.env文件了,而它在公共目录中可以工作。我该怎么办? - Sjoerd de Wit
虽然可能没有必要更改位置,但在构建具有多个后端(Laravel、Slim、Express等)的示例应用程序时,这可能会很有帮助,并且您希望将每个后端框架放在自己的文件夹中。为避免冗余,人们希望在这些文件夹上方的根文件夹中放置一个.env文件。 - OzzyTheGiant

0

bootstrap/app.php 中添加代码

$app = new Gecche\Multidomain\Foundation\Application(
    $_ENV['APP_BASE_PATH'] ?? dirname(__DIR__),
    dirname(__DIR__) . DIRECTORY_SEPARATOR . 'envfolder'
);

0

这样你就可以从其他位置访问.env文件,但这对安全性不利。

your-project/bootstrap/app.php

$app = new Illuminate\Foundation\Application( realpath(DIR.'/../') );

$app->useEnvironmentPath(base_path('foldername/'));

将此代码添加到 .htaccess 文件以提高安全性

<Files .env>
order allow,deny
Deny from all
</Files>

htaccess文件到底是做什么的?除了我的服务器,拒绝所有客户端请求? - AlexioVay

0

最终我设置了一个从public到public_html的符号链接,一切都按预期工作了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接