设置 laravel.env 的位置
Set location of laravel .env
所以我刚刚向我的生产服务器发布了 laravel 的构建。但是 .env 文件在我上传时是可读的。所以我将它上传到我网站的根目录 public_html/
目录旁边。
我的问题是:如何告诉laravel .env
文件所在的位置?当我将它放在 public_html/
文件夹中时它起作用了,但是我如何告诉它在根文件夹中查找?
您需要上传到 public_html
的是 Laravel 安装中 public
目录的内容,包括任何 JavaScript 文件、CSS 文件或图像客户端应该可以访问,其他所有内容都应该放在 public 目录之外。
如您在 official documentation 中所见,.env 文件必须位于 Laravel 应用程序的根目录中。无法更改文件位置(我认为也没有意义)。
此外,根文件夹不应是 public 文件夹,因为 .env 不应暴露给 public 访问权限,否则它的主要安全目标将完全丧失.
这样你可以从其他位置访问 .env 文件,但不利于安全。
your-project/bootstrap/app.php
$app = 新 Illuminate\Foundation\Application(
真实路径(DIR.'/../')
);
$app->useEnvironmentPath(base_path('foldername/'));
为了安全起见,在 .htaccess 文件中添加此代码
<Files .env>
order allow,deny
Deny from all
</Files>
在 bootstrap/app 中设置环境路径。php:
$app->useEnvironmentPath($env_path);
例如,我项目的目录布局:
webapp
-laravel
-public
-.env
env 文件的自定义路径
$app->useEnvironmentPath(
dirname(__DIR__, 2)
);
我最终设置了一个从 public 到 public_html 的符号链接,一切都按预期工作
在bootstrap/app中添加代码。php
$app = new Gecche\Multidomain\Foundation\Application(
$_ENV['APP_BASE_PATH'] ?? dirname(__DIR__),
dirname(__DIR__) . DIRECTORY_SEPARATOR . 'envfolder'
);
所以我刚刚向我的生产服务器发布了 laravel 的构建。但是 .env 文件在我上传时是可读的。所以我将它上传到我网站的根目录 public_html/
目录旁边。
我的问题是:如何告诉laravel .env
文件所在的位置?当我将它放在 public_html/
文件夹中时它起作用了,但是我如何告诉它在根文件夹中查找?
您需要上传到 public_html
的是 Laravel 安装中 public
目录的内容,包括任何 JavaScript 文件、CSS 文件或图像客户端应该可以访问,其他所有内容都应该放在 public 目录之外。
如您在 official documentation 中所见,.env 文件必须位于 Laravel 应用程序的根目录中。无法更改文件位置(我认为也没有意义)。
此外,根文件夹不应是 public 文件夹,因为 .env 不应暴露给 public 访问权限,否则它的主要安全目标将完全丧失.
这样你可以从其他位置访问 .env 文件,但不利于安全。
your-project/bootstrap/app.php
$app = 新 Illuminate\Foundation\Application( 真实路径(DIR.'/../') );
$app->useEnvironmentPath(base_path('foldername/'));
为了安全起见,在 .htaccess 文件中添加此代码
<Files .env>
order allow,deny
Deny from all
</Files>
在 bootstrap/app 中设置环境路径。php:
$app->useEnvironmentPath($env_path);
例如,我项目的目录布局:
webapp
-laravel
-public
-.env
env 文件的自定义路径
$app->useEnvironmentPath(
dirname(__DIR__, 2)
);
我最终设置了一个从 public 到 public_html 的符号链接,一切都按预期工作
在bootstrap/app中添加代码。php
$app = new Gecche\Multidomain\Foundation\Application(
$_ENV['APP_BASE_PATH'] ?? dirname(__DIR__),
dirname(__DIR__) . DIRECTORY_SEPARATOR . 'envfolder'
);