为什么laravel中的.env文件配置不起作用

时间:2018-01-21 11:57:11

标签: laravel file laravel-4 environment-variables

DB_CONNECTION=mysql      
DB_HOST=127.0.0.1     
DB_PORT=3306     
DB_DATABASE=
DB_USERNAME=root     
DB_PASSWORD=   

这是laravel 5.4的配置 但PHP artisan迁移不起作用,并有错误 和迁移错误

Users-MacBook-Pro: ATP Developers php artisan migrate

In Connection.php line 664: 
SQLSTATE[HY000] [1045] Access denied for user ''@'localhost' (using password: NO) (SQL: select * from information_schema.tables where table schema = atp_db and table_name = migrations)

In Connector.php line 87:
SQLSTATE[HY000] [1045] Access denied for user ''@'localhost' (using password: NO)

8 个答案:

答案 0 :(得分:2)

我遇到了类似的问题。因此,我运行了以下提到的命令 https://laracasts.com/discuss/channels/general-discussion/env-file-and-config-keys-not-updating-after-change[{category: "a", details: [{p:1,q:2,r:null},{p:3,q:4,r:null},{p:5,q:6,r:null},{p:7,q:8,r:null},{p:9,q:10,r:null}]}, {category: "b", details: [{p:11,q:22,r:null},{p:33,q:44,r:null},{p:55,q:66,r:null},{p:77,q:88,r:null},{p:9,q:10,r:null}]}, ... ]

此外,请确保也重新启动服务器


php artisan cache:clear
php artisan config:clear
php artisan route:clear

答案 1 :(得分:0)

将env主机条目更改为DB_HOST=localhost。或者添加@' 127.0.0.1'凭证到mysql。

答案 2 :(得分:0)

你应该写下这些:

DB_DATABASE = your database name
DB_USERNAME = root     
DB_PASSWORD = your password

再次运行php artisan serve以确保保存.env并再次运行php artisan migrate

答案 3 :(得分:0)

该错误表示您的数据库中没有正确的用户和主机组合。 env文件显示host为127.0.0.1,但错误中指定了localhost。将user @ localhost条目添加到数据库或将用户@%添加到通配符。

答案 4 :(得分:0)

此错误表示您没有在.env文件中配置数据库用户:''@'localhost'。在运行连接到数据库的任何函数之前,您的.env应该使用您配置的数据库名称和凭据填充所有这些字段。

以下是在运行php artisan migrate之前设置数据库和.env文件的初步步骤:

希望它有所帮助。

第1步:登录您的mysql并创建数据库。

mysql -u root -p
create database just_brew_it;

第2步:虽然您可以使用root通过laravel进行身份验证,但我会创建一个新用户来降低任何安全问题的风险:

GRANT ALL PRIVILEGES ON just_brew_it.* TO 'brew_user'@'%' identified by 'pint0fStell@' WITH GRANT OPTION;
FLUSH privileges;

第3步:使用适当的数据库,用户名和密码修改.env

DB_CONNECTION=mysql      
DB_HOST=127.0.0.1     
DB_PORT=3306     
DB_DATABASE= just_brew_it
DB_USERNAME= brew_user
DB_PASSWORD= pint0fStell@

答案 5 :(得分:0)

实际上,我遇到了同样的问题,我无法解释为什么Laravel指示旧主机,但是解决方案是更改密码。

在下面使用=> php artisan config:cache

答案 6 :(得分:0)

这个组合对我有用:

php artisan clear-compiled 
composer dump-autoload
php artisan optimize

答案 7 :(得分:0)

我遇到了同样的问题,即使使用 Artisan::call('config:cache'),我也无法运行 "config:cache" artisan 命令;

所以我这样做并解决了我的问题:

artisan config:cache 将 /config 中的所有文件缓存到它存储的单个数组中。然后它从该数组中读取所有配置变量并忽略 .env 或 /config 文件中的任何内容,直到您重新缓存它们。这就是为什么删除 .env 后它仍然有效。

https://laravel.com/docs/5.6/configuration#configuration-caching

如果您没有对实时服务器的 ssh 访问权限,则只需删除 bootstrap/cache/config.php 文件,该文件是 config:cache 生成的缓存文件。