Firebase数据库JSON私钥文件不可读错误排查求助
解决Firebase私钥文件不可读错误
核心问题分析
你代码里直接用/soilution-e35c1-firebase-adminsdk-m2elw-574c063fb3.json作为路径,这是系统根目录的绝对路径,而密钥文件实际在Project目录下,系统找不到文件才报错。另外还要确认两个关键路径的正确性:dbcon.php里的密钥文件路径,以及dashboard.php引入dbcon.php的路径。
具体修复步骤
修正dbcon.php中的密钥文件路径
因为dbcon.php和密钥文件都在Project目录下,用__DIR__拼接相对路径就能定位到正确文件,修改后的代码如下:<?php require __DIR__.'/vendor/autoload.php'; use Kreait\Firebase\Factory; $factory = (new Factory) ->withServiceAccount(__DIR__ . '/soilution-e35c1-firebase-adminsdk-m2elw-574c063fb3.json') ->withDatabaseUri('https://soilution-e35c1-default-rtdb.firebaseio.com/'); $database = $factory->createDatabase(); ?>确认dashboard.php引入dbcon.php的路径
dashboard.php在Project/User/Admin目录,需要向上回溯两级目录才能找到dbcon.php,所以引入代码应该写成:require __DIR__ . '/../../dbcon.php';之前如果引入路径不对,也会导致加载dbcon.php时的路径解析错误。
检查密钥文件权限
确保Web服务器运行进程(比如Apache的www-data、Nginx的nginx用户)能读取该JSON文件:- Linux系统:执行命令
chmod 644 /path/to/Project/soilution-e35c1-firebase-adminsdk-m2elw-574c063fb3.json - Windows系统:右键文件→属性→安全→给IIS_IUSRS或PHP运行账户添加读取权限
- Linux系统:执行命令
关于数据库仍能操作的说明
报错但数据库可正常操作,大概率是Firebase SDK的缓存机制在起作用——之前正确加载的配置被缓存,暂时还能执行操作,但缓存失效后会彻底无法工作,必须修复路径问题。
内容的提问来源于stack exchange,提问作者Bryan Clerigo
相关产品推荐
相关产品推荐

