Firebase credentials issue
March 18, 2025 ยท AI Conversations
Invalid service account: The file at 'storage/app/firebase/firebase_credentials.json' is not readable
### Possible Causes and Fixes
#### 1. **File Not Found**
Make sure the file `storage/app/firebase/firebase_credentials.json` actually exists in your Laravel project.
– Run:
ls -l storage/app/firebase/firebase_credentials.json
If the file is missing, add it to the directory.
#### 2. **File Permissions**
Check if Laravel can read the file:
– Run:
chmod 600 storage/app/firebase/firebase_credentials.json
chmod -R 755 storage/app/firebase
This sets the correct permissions.
#### 3. **File Storage Path Issue**
The default `storage/` path is not directly accessible. Move the file to the `config/` or `base_path()` for better accessibility.
Modify your `config/firebase.php` to:
return [
'credentials' => base_path(env('FIREBASE_CREDENTIALS', 'storage/app/firebase/firebase_credentials.json')),
'project_id' => env('FIREBASE_PROJECT_ID', 'opener334atech'),
];
#### 4. **Environment Variable Issue**
Ensure the `.env` file contains:
FIREBASE_CREDENTIALS=/absolute/path/to/firebase_credentials.json
FIREBASE_PROJECT_ID=opener334atech
Update `.env` and run:
php artisan config:clear
php artisan cache:clear
#### 5. **Service Provider Load Order**
Since `storage/` is not always accessible at early boot stages, modify your `AppServiceProvider`:
$this->app->singleton(FirebaseAuth::class, function ($app) {
$credentialsPath = base_path(config('firebase.credentials'));
if (!file_exists($credentialsPath)) {
throw new Exception("Firebase credentials file not found: $credentialsPath");
}
return (new Factory)
->withServiceAccount($credentialsPath)
->withProjectId(config('firebase.project_id'))
->createAuth();
});
This ensures the file exists before passing it to Firebase.
### Test After Fixing
Run:
php artisan tinker
Then:
app(KreaitFirebaseAuth::class);
If it loads successfully, the issue is resolved.
Let me know if the issue persists! ๐