php - 环境变量在 Laravel 的 FirebaseController 中工作异常
问题描述
我正在尝试将我的本地主机应用程序连接到 firebase。
firebase 控制器可以使用以下代码正常工作:
<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use Kreait\Firebase;
use Kreait\Firebase\Factory;
use Kreait\Firebase\ServiceAccount;
use Kreait\Firebase\Database;
class FirebaseController extends Controller
{
protected $database;
public function __construct()
{
$this->database = app('firebase.database');
}
public function index()
{
$factory = (new Factory)
->withServiceAccount(__DIR__ . env('GOOGLE_APPLICATION_CREDENTIALS'))
->withDatabaseUri(env('DATABASE_URI'));
$database = $factory->createDatabase();
$newPost = $database
->getReference('blog/posts')
->push([
'title' => 'Post title',
'body' => 'This should probably be longer.'
]);
echo "<pre>";
print_r($newPost->getvalue());
}
}
但是当我从以下位置更改 .env 中的环境变量时:
FIREBASE_CREDENTIALS=FirebaseKey.json
GOOGLE_APPLICATION_CREDENTIALS=/FirebaseKey.json
至
FIREBASE_CREDENTIALS=/FirebaseKey.json
GOOGLE_APPLICATION_CREDENTIALS=/FirebaseKey.json
by 只加了一个正斜线FIREBASE_CREDENTIALS
,突然页面裂开。错误:
Kreait\Firebase\Exception\InvalidArgumentException
Invalid service account: /FirebaseKey.json can not be read:
SplFileObject::__construct(/FirebaseKey.json): Failed to open stream: No such file or directory
我实际上没有FIREBASE_CREDENTIALS
在其他任何地方使用该变量,或者我不应该在.env
文件中声明这个变量?
而且,当我替换GOOGLE_APPLICATION_CREDENTIALS
withFIREBASE_CREDENTIALS
并更改文件中的FIREBASE_CREDENTIALS
andGOOGLE_APPLICATION_CREDENTIALS
的值时.env
,如下所示:
FIREBASE_CREDENTIALS=/FirebaseKey.json
GOOGLE_APPLICATION_CREDENTIALS=/FirebaseKey.json
它将显示相同的错误。
Kreait\Firebase\Exception\InvalidArgumentException
Invalid service account: /FirebaseKey.json can not be read:
SplFileObject::__construct(/FirebaseKey.json): Failed to open stream: No such file or directory
所以问题是为什么使用FIREBASE_CREDENTIALS
变量,然后它无法读取 .json 文件,但使用GOOGLE_APPLICATION_CREDENTIALS
一切都很好?
这是目录的屏幕截图。
解决方案
推荐阅读
- c# - DevExtreme 下拉框中的数据绑定不起作用
- vue.js - Vue路由器历史模式但是当我在url上使用哈希时它会重新加载页面
- entity-framework-core - EF Core 中的 IsNumeric
- swift - Swift 线程 1:EXC_BAD_ACCESS(代码=2,地址=0x7ffeedbbaff8)
- python - 从 Google Cloud Python 作业访问 Google Storage 上的文件
- mysql - 使用两个不同的日期条件计算列中的所有行
- python - 如何使用 python 将文本从 txt 文件复制和重新排列到另一个文件?
- php - 如何使用 CActiveDataProvider 对加密的数据库字段进行排序
- ios - 无法在 SwiftUI 按钮视图中从 Cloud Firestore 获取数据
- python - 我不能让 image_url 加载到本地主机上请帮助