如何保护.env文件laravel

loc*_*ock 8 php laravel-5.2

我将我的项目移动到主机,但我可以使用地址mysite.com/.env访问.env并显示包含所有变量和安全数据的文件.我的.env文件:

    APP_ENV=local
APP_DEBUG=true
APP_KEY=base64:xxxxxxx
APP_URL=http://localhost

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_PORT=3306
DB_DATABASE=xx
DB_USERNAME=xx
DB_PASSWORD=secret

CACHE_DRIVER=file
SESSION_DRIVER=file
QUEUE_DRIVER=sync

REDIS_HOST=127.0.0.1
REDIS_PASSWORD=null
REDIS_PORT=6379

MAIL_DRIVER=smtp
MAIL_HOST=mailtrap.io
MAIL_PORT=2525
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
Run Code Online (Sandbox Code Playgroud)

我怎么能隐藏这个文件?这是合乎逻辑的解决方案吗?

注意:(我将所有文件公共文件夹移动到根目录中.)

Kar*_*hik 8

在根目录中创建.htaccess文件并放入以下代码.

#Disable index view
options -Indexes

#hide a Specifuc File

<Files .env>
order allow,deny
Deny from all
</Files>
Run Code Online (Sandbox Code Playgroud)


小智 5

我尝试按照以下步骤在共享主机中部署 laravel。

1 -在 Ubuntu 操作系统中编辑/etc/apache2/apache2.conf。请检查其他操作系统中的相应文件。

<Directory /var/www/>
        Options Indexes FollowSymLinks
        AllowOverride All # Changed from None to All
        Require all granted
</Directory>
Run Code Online (Sandbox Code Playgroud)
  1. 启用模组重写 sudo a2enmod rewrite

  2. 在根目录(公共 html 文件夹)中编辑或创建 .htaccess

     <Files ~ "\.(env|json|config.js|md|xml|gitignore|gitattributes|lock|editorconfig|yml|styleci.yml)$">
         Order allow,deny
         Deny from all
     </Files>
     Options -Indexes
     <Files ~ "(artisan|package.json|webpack.mix.js)$">
         Order allow,deny
         Deny from all
     </Files>
    
    Run Code Online (Sandbox Code Playgroud)

4 - 重新启动 Apache 服务器, sudo service apache2 restart

注意:- 前两个步骤仅在我自己的 PC 中使用。


小智 2

  1. 除 Public 文件夹外的所有文件夹都移动到更高级别,例如文件夹 laravel - http://prntscr.com/bryvu7

  2. 更改文件 publi_html/index.php 行

    require __DIR__.'/../bootstrap/autoload.php';

require __DIR__.'/../laravel/bootstrap/autoload.php';
Run Code Online (Sandbox Code Playgroud)

并线

$app = require_once __DIR__.'/../bootstrap/app.php';
Run Code Online (Sandbox Code Playgroud)

$app = require_once __DIR__.'/../laravel/bootstrap/app.php';
$app->bind('path.public', function() {
    return __DIR__;
});
Run Code Online (Sandbox Code Playgroud)
  1. 更改文件 laravel/server.php 行

    require_once __DIR__.'/public/index.php';

require_once __DIR__.'/index.php';
Run Code Online (Sandbox Code Playgroud)