我刚刚将Laravel的一个版本发布到了我的生产服务器上。但是当我上传它时,.env
文件是可读的。所以我把它上传到了站点根目录旁边的public_html/
目录。
我的问题是:如何告诉Laravel .env
文件的位置?当我把它放在public_html/
文件夹中时,它可以正常工作,但是我该如何让它查找根目录下的文件?
我刚刚将Laravel的一个版本发布到了我的生产服务器上。但是当我上传它时,.env
文件是可读的。所以我把它上传到了站点根目录旁边的public_html/
目录。
我的问题是:如何告诉Laravel .env
文件的位置?当我把它放在public_html/
文件夹中时,它可以正常工作,但是我该如何让它查找根目录下的文件?
在 bootstrap/app.php 中设置环境变量路径:
$app->useEnvironmentPath($env_path);
例如,我的项目的目录结构如下:
webapp
-laravel
-public
-.env
自定义环境文件的路径
$app->useEnvironmentPath(
dirname(__DIR__, 2)
);
public_html
的是 Laravel 安装中 public
目录下的所有内容,包括任何应该对客户端可访问的 JavaScript 文件、CSS 文件或图像文件,其他所有内容都应该放在 public 目录之外。在 bootstrap/app.php 中添加代码
$app = new Gecche\Multidomain\Foundation\Application(
$_ENV['APP_BASE_PATH'] ?? dirname(__DIR__),
dirname(__DIR__) . DIRECTORY_SEPARATOR . 'envfolder'
);
这样你就可以从其他位置访问.env文件,但这对安全性不利。
your-project/bootstrap/app.php
$app = new Illuminate\Foundation\Application( realpath(DIR.'/../') );
将此代码添加到 .htaccess 文件以提高安全性
<Files .env>
order allow,deny
Deny from all
</Files>
最终我设置了一个从public到public_html的符号链接,一切都按预期工作了。