我是laravel的新手,我知道.env
文件用于存储数据库和电子邮件凭据。但是,当我打开http://servername/.env
时,.env
文件内容会显示在浏览器中。
是否有机会保护我的数据库凭据而不将文件名更改为不可猜测的文件?
如果我使用.htaccess
来阻止文件读取,这会对laravel框架产生负面影响吗?
答案 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>