and*_*ber 82 php environment-variables laravel laravel-5.2
升级到Laravel 5.2后,我的.env
文件值都没有被读取.我按照升级说明进行操作 ; 除了auth.php之外,我的配置文件都没有被更改.它们在之前的版本5.1.19中都运行良好
.env
包含诸如的值
DB_DATABASE=mydb
DB_USERNAME=myuser
Run Code Online (Sandbox Code Playgroud)
config/database.php
包含
'mysql' => [
'database' => env('DB_DATABASE', 'forge'),
'username' => env('DB_USERNAME', 'forge'),
]
Run Code Online (Sandbox Code Playgroud)
我收到此错误:
PDOException: SQLSTATE[HY000] [1045] Access denied for user 'forge'@'localhost' (using password: NO)
Run Code Online (Sandbox Code Playgroud)
显然没有拉我的env配置.这会影响我的每个配置文件,包括第三方,如bugsnag.
我也试过了
php artisan config:clear
php artisan cache:clear
Run Code Online (Sandbox Code Playgroud)
更新
试 php artisan tinker
>>> env('DB_DATABASE')
=> null
>>> getenv('DB_DATABASE')
=> false
>>> config('database.connections.mysql.database')
=> "forge"
>>> dd($_ENV)
[]
Run Code Online (Sandbox Code Playgroud)
我尝试安装Laravel 5.2的新副本.我基本上只复制在我的"app"文件夹中; 没有包含额外的作曲家包.还有同样的问题.我在同一台服务器上有其他Laravel 5.2项目正常工作.
Gau*_*pta 75
从官方Laravel 5.2升级说明:
如果
config:cache
在部署期间使用该命令,则 必须确保仅从env
配置文件中调用该函数,而不是从应用程序中的任何其他位置调用该函数.如果您
env
在应用程序中进行呼叫,强烈建议您在配置文件中添加正确的配置值,并env
从该位置进行呼叫,以便将env
呼叫转换为config
呼叫.
参考:https://laravel.com/docs/5.2/upgrade#upgrade-5.2.0
小智 59
如果您的任何.env
变量包含空格,请确保将它们用双引号括起来.例如:
SITE_NAME="My website"
在测试之前不要忘记清除缓存:
php artisan config:cache
php artisan config:clear
Run Code Online (Sandbox Code Playgroud)
and*_*ber 38
哇.好悲伤.这是因为我有一个带有空格的env值,而不是用引号括起来
这个
SITE_NAME=My website
Run Code Online (Sandbox Code Playgroud)
改成了这个
SITE_NAME="My website"
Run Code Online (Sandbox Code Playgroud)
固定它.我认为这与Laravel 5.2有关,现在将vlucas/phpdotenv从1.1.1 升级到2.1.0
Der*_*ima 21
我有一个类似的问题,我config/services.php
解决了使用config clear
和optimize
命令:
php artisan config:clear
php artisan optimize
Run Code Online (Sandbox Code Playgroud)
Gan*_*h K 16
运行这个:
php artisan config:clear
php artisan cache:clear
Run Code Online (Sandbox Code Playgroud)
然后
php artisan config:cache
Maj*_*bib 16
您可以通过以下建议解决问题
建议 1:
你必须通过配置文件使用.env文件,这意味着你需要从配置文件(例如/config/app.php或/config/database.php)中读取.env文件,然后你才能使用配置来自项目任何位置的文件。
建议 2: 在双引号内设置您的 env 值
GOOGLE_CLIENT_ID="887557629-9h6n4ne.apps.googleusercontent.com"
GOOGLE_CLIENT_SECRET="YT2ev2SpJt_Pa3dit60iFJ"
GOOGLE_MAP="AIzaSyCK6RWwql0DucT7Sl43w9ma-k8qU"
Run Code Online (Sandbox Code Playgroud)
建议 3:在更改任何配置或 env 值后保持以下命令序列。
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
Run Code Online (Sandbox Code Playgroud)
建议 4: 当语法 1 不起作用时,您可以尝试另一种语法 2
$val1 = env('VARIABLE_NAME'); // syntax1
$val2 = getenv('VARIABLE_NAME'); // syntax2
echo 'systax1 value is:'.$val1.' & systax2 value is:'.$val2;
Run Code Online (Sandbox Code Playgroud)
建议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");
Run Code Online (Sandbox Code Playgroud)
TrO*_*nNe 11
对我来说,它按以下顺序工作:
php artisan config:cache
php artisan config:clear
php artisan cache:clear
Run Code Online (Sandbox Code Playgroud)
而且我尝试了所有其他方法而没有运气。
我在升级说明中错过了这个:
在
app.php
配置文件中添加一个env配置选项,如下所示:'env' => env('APP_ENV', 'production')
添加此行.env
可以正确读取本地文件.
当你发出命令php artisan config:cache
然后它将消灭所有env
变量env()
并将给出空值,尝试运行follwing命令并繁荣那里你env()
再次开始捕获所有env
变量
php artisan config:clear
Run Code Online (Sandbox Code Playgroud)
小智 8
对我来说,以下工作
- php artisan config:cache
- php artisan config:clear
- php artisan cache:clear
Run Code Online (Sandbox Code Playgroud)
使用以下方法删除缓存:
php artisan config:clear
php artisan config:cache
Run Code Online (Sandbox Code Playgroud)
当:port在本地.env中时,也会发生同样的事情
再次使用双引号可以解决问题
APP_URL="http://localhost:8000"
Run Code Online (Sandbox Code Playgroud)
然后
php artisan config:clear
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
87106 次 |
最近记录: |