Laravel扩展在Ubuntu服务器引发Google Sheets API错误排查
我在Laravel v8项目中引入Google API,执行了以下命令:
composer require revolution/laravel-google-sheets php artisan vendor:publish --provider="PulkitJalan\Google\GoogleServiceProvider" --tag="config"
配置凭证后,该功能在Lightsail/Bitnami测试服务器运行正常。将分支拉取到Lightsail/Ubuntu正式服务器,执行composer install并确认两台服务器的包版本、.env文件内容一致,但连接表格时出现错误:
Argument 1 passed to PulkitJalan\Google\Client::__construct() must be of the type array, null given, called in /vendor/pulkitjalan/google-apiclient/src/GoogleServiceProvider.php on line 31
错误指向以下代码:
public function register() { $this->mergeConfigFrom(__DIR__.'/../config/google.php', 'google'); $this->app->bind('PulkitJalan\Google\Client', function ($app) { return new Client($app['config']['google']); }); }
请问问题出在哪里?
这个错误的核心是$app['config']['google']返回了null,说明Laravel未正确加载Google相关配置。以下是排查和解决步骤:
检查配置文件是否存在
正式服务器可能未成功发布配置文件,重新执行发布命令:php artisan vendor:publish --provider="PulkitJalan\Google\GoogleServiceProvider" --tag="config"执行后确认
config/google.php文件存在且内容完整。清除配置缓存
正式服务器若执行过php artisan config:cache,会导致新配置无法生效。执行以下命令清除缓存:php artisan config:clear若需要重新缓存配置,确保所有配置正确后再执行
php artisan config:cache。验证.env变量引用正确性
检查config/google.php中的配置项是否正确关联.env变量,例如:'client_id' => env('GOOGLE_CLIENT_ID'), 'client_secret' => env('GOOGLE_CLIENT_SECRET'), 'redirect_uri' => env('GOOGLE_REDIRECT_URI'), // 其他必填配置项同时确认正式服务器的.env文件中这些变量无拼写错误,且值正确。
重新安装依赖
尽管包版本一致,仍可能存在依赖安装不完整的情况,重新执行:composer install --no-dev --optimize-autoloader确保
pulkitjalan/google-apiclient等依赖完全安装。确认配置加载状态
可在临时路由/控制器中添加代码验证配置是否加载:dd(config('google'));若输出
null,继续排查配置文件发布和缓存问题;若为数组,检查数组内必填项是否均有有效值。
内容的提问来源于stack exchange,提问作者user1899829

