Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 无法访问ServiceProvider | Laravel中的config()_Php_Laravel_Paypal_Paypal Rest Sdk - Fatal编程技术网

Php 无法访问ServiceProvider | Laravel中的config()

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

我为paypal创建了一个定制服务提供商。 当我尝试从提供程序内部访问config时,它返回null

下面是我写的代码

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');