升级到Laravel 5.2后,我的.env
个文件值都没有被读取。我跟着upgrade instructions;除了auth.php之外,我的配置文件都没有被更改。它们在以前的版本5.1.19
.env
包含
DB_DATABASE=mydb
DB_USERNAME=myuser
config/database.php
包含
'mysql' => [
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
]
我收到此错误:
PDOException: SQLSTATE[HY000] [1045] Access denied for user 'forge'@'localhost' (using password: NO)
显然没有拉进我的env配置。这会影响我的每个配置文件,包括第三方,例如bugsnag。
我也试过
php artisan config:clear
php artisan cache:clear
更新
尝试php artisan tinker
>>> env('DB_DATABASE')
=> null
>>> getenv('DB_DATABASE')
=> false
>>> config('database.connections.mysql.database')
=> "forge"
>>> dd($_ENV)
[]
我已尝试安装Laravel 5.2的新副本。我基本上只复制到我的app
文件夹中;没有包含额外的作曲家包。还有同样的问题。我在同一台服务器上有其他Laravel 5.2项目正常工作。
答案 0 :(得分:63)
来自官方的Laravel 5.2升级说明:
如果您在部署期间使用
config:cache
命令,那么 必须确保您只是从内部调用env
函数 你的配置文件,而不是你的其他任何地方 应用如果您在应用程序中呼叫
env
,那就非常强烈 建议您为配置添加适当的配置值 文件并从该位置调用env
,允许您进行转换 您的env
来电config
来电。
答案 1 :(得分:41)
如果您的任何.env
变量包含空格,请确保将它们用双引号括起来。例如:
SITE_NAME="My website"
在测试之前不要忘记清除缓存:
php artisan config:cache
php artisan config:clear
答案 2 :(得分:35)
哇。好悲伤。这是因为我有一个带有空格的env值,没有被引号括起来
这个
SITE_NAME=My website
已更改为
SITE_NAME="My website"
修正了它。我认为这与Laravel 5.2有关,现在将vlucas/phpdotenv从1.1.1升级到2.1.0
答案 3 :(得分:20)
我的config/services.php
出现了类似的问题,我使用config clear
和optimize
命令解决了这个问题:
php artisan config:clear
php artisan optimize
答案 4 :(得分:15)
您可以按照以下建议解决问题
建议1:
您必须通过配置文件使用.env文件,这意味着您需要从配置文件(例如/config/app.php或/config/database.php)中读取.env文件,然后您可以在项目的任何位置使用配置文件。
建议2:在双引号内设置环境值
GOOGLE_CLIENT_ID="887557629-9h6n4ne.apps.googleusercontent.com"
GOOGLE_CLIENT_SECRET="YT2ev2SpJt_Pa3dit60iFJ"
GOOGLE_MAP="AIzaSyCK6RWwql0DucT7Sl43w9ma-k8qU"
建议3::更改任何配置或环境值后,请保持以下命令顺序。
composer dump-autoload
composer dump-autoload -o
php artisan clear-compiled
php artisan optimize
php artisan route:clear
php artisan view:clear
php artisan cache:clear
php artisan config:cache
php artisan config:clear
建议4:如果语法1不起作用,则可以尝试其他语法2
$val1 = env('VARIABLE_NAME'); // syntax1
$val2 = getenv('VARIABLE_NAME'); // syntax2
echo 'systax1 value is:'.$val1.' & systax2 value is:'.$val2;
建议5::当您的用户数量较高/更多时,您必须在服务器配置中增加相关的内存大小。
建议6::在读取.env变量时,请设置默认的可能值。
$googleClinetId=env("GOOGLE_CLIENT_ID","889159-9h6n95f1e.apps.googleusercontent.com");
$googleSecretId=env("GOOGLE_CLIENT_ID","YT2evBCt_Pa3dit60iFJ");
$googleMap=env("GOOGLE_MAP","AIzaSyCK6RUl0T7Sl43w9ma-k8qU");
答案 5 :(得分:14)
运行这个:
php artisan config:clear
php artisan cache:clear
然后
php artisan config:cache
答案 6 :(得分:8)
当您发出命令php artisan config:cache
时,它会清除所有env
个变量,而env()
会给出空值,尝试运行以下命令并再次展开env()
开始捕获所有env
变量
php artisan config:clear
答案 7 :(得分:8)
我在本地环境上遇到了同样的问题,我通过以下方式解决了
答案 8 :(得分:7)
简单就是力量:
php artisan config:cache
您将收到:
清除配置缓存!
配置缓存成功!
答案 9 :(得分:6)
我在升级说明中错过了这个:
在
app.php
配置文件中添加一个env配置选项,如下所示:'env' => env('APP_ENV', 'production')
添加此行可以正确读取本地.env
文件。
答案 10 :(得分:5)
使用以下方法删除缓存:
php artisan config:clear
php artisan config:cache
答案 11 :(得分:3)
除了@andrewtweber建议的内容之外,确保 KEY = 和值之间没有空格,除非它在引号之间
.env 文件,例如:
...
SITE_NAME= My website
MAIL_PORT= 587
MAIL_FROM_NAME= websitename
...
为:
...
SITE_NAME="My website"
MAIL_PORT=587
MAIL_FROM_NAME=websitename
...
答案 12 :(得分:3)
我在当地遇到了同样的问题,我在这里尝试了所有答案,但无济于事。只有这对我有用,
php artisan config:clear
和restart server
。像魅力一样工作!
答案 13 :(得分:3)
当:port在您本地的.env中时,也会发生同样的事情
再次使用双引号可以解决问题
APP_URL="http://localhost:8000"
然后
php artisan config:clear
答案 14 :(得分:2)
运行此命令
php artisan config:clear //repopulate all the env variable
php artisan cache:clear //flush all the cached content
php artisan config:cache //flush all cached env variable
答案 15 :(得分:2)
对我来说,它按此顺序工作:
php artisan config:cache
php artisan config:clear
php artisan cache:clear
我尝试了所有其他方法,但没有运气。
答案 16 :(得分:2)
如果您在本地开发期间确实调用了config:cache,则可以通过删除bootstrap / cache / config.php文件来撤消此操作。这就是我的工作。
答案 17 :(得分:2)
我使用命令php artisan key:generate
答案 18 :(得分:0)
我在index.php
文件中执行dd / die / dump时出错了。这将导致系统无法重新生成配置。
只需转储视图文件即可。对.env
文件的更改会立即更新。
答案 19 :(得分:0)
我经历了这一点。原因是apache(用户www-data)由于文件权限而无法读取.env。 因此,我更改了文件权限,以确保服务器(Apache)具有对该文件的读取权限。就这样,繁荣起来,现在一切都正常了!
答案 20 :(得分:0)
如果您在本地开发期间确实调用了config:cache,则可以通过删除bootstrap / cache / config.php文件来撤消此操作。这就是我的工作。
@Payal Pandav给出了以上评论。
我想讲一个简单的解决方法。只需在bootstrap / cache /文件夹中编辑config.php文件。并更改凭据。这对我有用。请不要删除此文件,因为它可能包含生产环境中的其他重要数据。
答案 21 :(得分:0)
对我来说,以下方法奏效了
答案 22 :(得分:0)
在我的情况下,laravel 5.7 env('APP_URL')
无效,但config('app.url')
有效。如果我将新变量添加到env
并进行配置-它不起作用-但在php artisan config:cache
之后,它开始起作用。
答案 23 :(得分:0)
在幼体发育过程中,我经常遇到相同的问题。有时env停止工作并且不返回任何值。原因可能会有所不同,具体取决于您的情况。但就几天前而言,我只是运行
PHP artisan::config:clear
因此请小心使用此命令。因为它将清除其缓存中的所有配置数据。因此之后,它将不会返回任何值。因此,在这种情况下,如果您已运行 PHP artisan config :: clear 命令,则需要首先使用它。
php artisan config:cache // it will cache all data
php artisan config:clear
Configuration cache cleared!
答案 24 :(得分:0)
尝试了以上所有方法。结束了
chmod 666 .env
有效。这个问题似乎在我继承的应用程序中不断出现,但是,最近一次是在添加.env.testing之后。运行Laravel 5.8
答案 25 :(得分:0)
如果在控制台上运行此php artisan config:cache
命令,它会将所有.env文件内容存储在缓存中,在此命令之后如果将任何内容附加到.env文件中,它将不会在您使用之前不可用运行php artisan config:clear
命令
答案 26 :(得分:0)
我对此有一些问题。 这似乎是应用程序中某处的文件权限问题,而不是.env文件。
我不得不 -停止我的码头工人 -使用chown为我自己的用户设置整个项目的所有权 -重新启动Docker
这一次成功了。
答案 27 :(得分:0)
不确定是否已经发布,但这个组合对我有用:
php artisan clear-compiled
composer dump-autoload
php artisan optimize