2016-07-12 62 views
4

我将我的项目移动到HOST,但我可以访问地址为mysite.com/.env的.env文件,并显示包含所有变量和安全数据的文件。 我.ENV文件:如何保护.env文件laravel

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 

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

注:(我将所有文件的根目录下的公共文件夹。)

+0

Apache拒绝访问默认以'.'开头的文件。你使用什么网络服务器? – apokryfos

+0

我的网络服务器是Apache。 – lock

+2

.env应该在/ path/to/your/laravel-project中。而/ path/to/your/laravel-project/public应该是webroot。所以,除非你改变了默认设置,否则你应该无法访问.env –

回答

2
  1. 之外的所有公共文件夹移动到一个更高的层次,如文件夹laravel - http://prntscr.com/bryvu7

  2. 变化文件publi_html/index.php的 线

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

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

和线路

$app = require_once __DIR__.'/../bootstrap/app.php'; 

$app = require_once __DIR__.'/../laravel/bootstrap/app.php'; 
$app->bind('path.public', function() { 
    return __DIR__; 
}); 
  • 更改文件laravel/server.php 线

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

  • require_once __DIR__.'/index.php'; 
    
    +0

    Thanks.But完成这些事情后,当进入mysite.com时显示laravel文件夹公用文件夹不显示索引网站。 – lock

    +0

    也许承载您的文件夹 - 公共。不是文件夹public_html? –

    +0

    写给我skype:fatboymen –

    0

    你应该在你的应用程序更改权限的所有文件夹741,除了引导和存储和公共(755)。

    2

    在您的根目录中创建.htaccess文件并输入以下代码。

    #Disable index view 
    options -Indexes 
    
    #hide a Specifuc File 
    
    <Files .env> 
    order allow,deny 
    Deny from all 
    </Files>