2016-07-12 116 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>