如何禁用.env文件读取?

时间:2015-04-30 09:09:50

标签: laravel laravel-5

我是laravel的新手,我知道.env文件用于存储数据库和电子邮件凭据。但是,当我打开http://servername/.env时,.env文件内容会显示在浏览器中。

是否有机会保护我的数据库凭据而不将文件名更改为不可猜测的文件?

如果我使用.htaccess来阻止文件读取,这会对laravel框架产生负面影响吗?

4 个答案:

答案 0 :(得分:5)

请在.htaccess文件中添加以下代码。它也适用于localhost和Live服务器。

# Disable Directory listing
Options -Indexes

# block files which needs to be hidden, specify .example extension of the file
<Files ~ "\.(env|json|config.js|md|gitignore|gitattributes|lock)$">
    Order allow,deny
    Deny from all
</Files>

答案 1 :(得分:2)

生产域中的

应该指向index.php文件所在的laravel project公共文件夹,一旦完成,就无法访​​问.env文件。如果你上传项目到显示演示到客户端不上传.env文件你可以在.htaccesss文件中设置evn参数

.htaccess文件

SetEnv APP_ENV local
SetEnv APP_DEBUG true
SetEnv APP_KEY app_keyasfassafas

SetEnv DB_HOST localhost
SetEnv DB_DATABASE db_name
SetEnv DB_USERNAME root

SetEnv CACHE_DRIVER file
SetEnv SESSION_DRIVER file
SetEnv QUEUE_DRIVER sync

重要的apache env_module应启用

答案 2 :(得分:0)

您可能正在寻找如何阻止.env文件在apache上提供的方式,因此请阅读。

/etc/apache2/apache.conf文件-Ubuntu上执行此操作。 在该文件的这一部分之后
<FilesMatch "^\.ht">
        Require all denied
</FilesMatch>

在下面添加代码

# Hide a specific file
<Files .env>
    Order allow,deny
    Deny from all
</Files>

然后使用sudo service apache2 restart重新启动apache服务器,然后开始使用!

答案 3 :(得分:0)

在您的.htaccess文件中

.htaccess结尾处的行下方

<Files .env>
order allow,deny
Deny from all
</Files>

Laravel .htaccess文件
选项-MultiViews-索引

    RewriteEngine On

    # Handle Authorization Header
    RewriteCond %{HTTP:Authorization} .
    RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}]

    # Redirect Trailing Slashes If Not A Folder...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_URI} (.+)/$
    RewriteRule ^ %1 [L,R=301]

    # Handle Front Controller...
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

<Files .env>    <----------------at the end of .htaccess file
order allow,deny
Deny from all
</Files>