Php 无法访问ServiceProvider | Laravel中的config()
我为paypal创建了一个定制服务提供商。 当我尝试从提供程序内部访问config时,它返回null 下面是我写的代码Php 无法访问ServiceProvider | Laravel中的config(),php,laravel,paypal,paypal-rest-sdk,Php,Laravel,Paypal,Paypal Rest Sdk,我为paypal创建了一个定制服务提供商。 当我尝试从提供程序内部访问config时,它返回null 下面是我写的代码 public function register() { $this->app->singleton(ApiContext::class, function($app){ $paypalConf = $app['config']->get('paypal'); $apiContext = new ApiContext(n
public function register()
{
$this->app->singleton(ApiContext::class, function($app){
$paypalConf = $app['config']->get('paypal');
$apiContext = new ApiContext(new OAuthTokenCredential(
$paypalConf['client_id'],$paypalConf['client_secret']
));
$apiContext->setConfig($paypalConf['settings']);
return $apiContext;
});
}
但它抛出了以下错误
if (empty($credObj)) {
throw new PayPalInvalidCredentialException("Credential not found for " . ($userId ? $userId : " default user") .
". Please make sure your configuration/APIContext has credential information");
}
“找不到默认用户的凭据。请确保您的配置/APIContext具有凭据信息
这当然是因为我的配置文件返回null
这是我的paypal.php
return [
'client_id' => env('PAYPAL_CLIENT_ID', ''),
'client_secret' => env('PAYPAL_SECRET', ''),
'settings' => [
'mode' => env('PAYPAL_MODE', ''),
'http.ConnectionTimeOut' => 30,
'log.LogEnabled' => true,
'log.FileName' => storage_path().'/logs/paypal.log',
'log.LogLevel' => 'ERROR'
]];
并且贝宝凭证存在于.env文件中
我尝试过清除配置并再次缓存它,但没有成功
更新
似乎register方法在服务提供商中不起作用。
但是我已经在config文件夹
paypal.php
的config/app.php中注册了提供者,而不是paypal.config
:
<?php
return [
'client_id' => env('PAYPAL_CLIENT_ID', ''),
'client_secret' => env('PAYPAL_SECRET', ''),
'settings' => [
'mode' => env('PAYPAL_MODE', ''),
'http.ConnectionTimeOut' => 30,
'log.LogEnabled' => true,
'log.FileName' => storage_path().'/logs/paypal.log',
'log.LogLevel' => 'ERROR'
]];
没有更多的信息 清除配置缓存:
php-artisan-config:clear
如果您有一个缓存的配置,并且您向配置文件或env添加了任何内容,包括另一个到config/app.php
的服务提供商,那么它将不会被提取,因为它使用的是配置的缓存版本
您只需进入
tinker
并在更改任何配置文件或环境后请求这些配置值,即可验证此类内容。您是否尝试过dd($paypalConf,$app['config']->get('app.name'))
,在第一行之后的服务提供程序中?我闻到一种键入错误。@Kyslik dd在那里不工作。您是否在config/app.php
中注册了服务提供程序?@Kyslik是的,提供程序已在提供程序数组中注册。然后,在关闭中添加dd,您需要知道注册方法是否正在执行。很抱歉,这是一个键入,它是's config/paypal.phpDid您在config文件夹中创建了该文件?您是否在服务提供商的顶部使用了use-light\Support\Facades\config;
?laravel文件夹my-paypal.php附带的config文件夹位于该文件夹中。是的,我正在使用config;使用Configtry-helper方法config('paypal.client\u id'))
!不,我先尝试了helper,然后切换到app['config',甚至Facade。它们都不起作用。我简直是在拉毛。我已经清除了缓存的配置。它仍然不起作用。我删除了服务提供商,并使用手动类实例化。谢谢你的帮助。
Config::get('paypal.client_id');
Config::get('paypal.settings.mode');