【发布时间】:2018-05-08 19:42:27
【问题描述】:
我正在尝试使用来自oauth2-client 的 oauth2-client。
我通过 composer 安装了这个包,它在我的根目录中创建了一个供应商文件夹,其中包含有联盟包。 然后我将它复制到我的 application/third_party/vendor 文件夹中。
在我的控制器中,我正在尝试这样做:
<?php
defined('BASEPATH') or exit('No direct script access allowed');
class APl extends MY_Controller
{
public function __construct()
{
parent::__construct();
// Force SSL
$this->force_ssl();
// Form and URL helpers always loaded (just for convenience)
$this->load->helper('url');
$this->load->helper('form');
//Load Libraries
$this->load->library('managers/NameManager');
$this->load->library('managers/BreadcrumbManager');
}
public function aPLogin() {
$provider = new \League\OAuth2\Client\Provider\GenericProvider([
'clientId' => 'demoapp', // The client ID assigned to you by the provider
'clientSecret' => 'demopass', // The client password assigned to you by the provider
'redirectUri' => 'http://example.com/your-redirect-url/',
'urlAuthorize' => 'http://brentertainment.com/oauth2/lockdin/authorize',
'urlAccessToken' => 'http://brentertainment.com/oauth2/lockdin/token',
'urlResourceOwnerDetails' => 'http://brentertainment.com/oauth2/lockdin/resource'
]);
}
}
在我的配置文件中,我尝试输入以下代码:
$config['composer_autoload'] = TRUE;
require FCPATH . 'third_party\vendor\autoload.php';
在我的 index.php 文件中看起来像这样:
require FCPATH . 'third_party\vendor\autoload.php';
/*
* --------------------------------------------------------------------
* LOAD THE BOOTSTRAP FILE
* --------------------------------------------------------------------
*
* And away we go...
*/
require_once BASEPATH.'core/CodeIgniter.php';
我尝试通过以下方式更改 FCPATH 要求:
require_once APPPATH.'third_party\vendor\autoload.php';
也试过了:
include_once BASEPATH.'../application/third_party/vendor/autoload.php';
那么我要么得到:
Fatal error: require(): Failed opening required 'D:\wamp\www\codeigniter\third_party\vendor\autoload.php' (include_path='.;C:\php\pear') in D:\wamp\www\codeigniter\index.php on line 311
或
Message: Class 'League\OAuth2\Client\Provider\GenericProvider' not found
【问题讨论】:
-
您的主要问题是 CodeIgniter 期望您的供应商目录位于应用程序目录中。那是您的 composer.json 文件所属的地方,您将在其中运行您的 composer 命令来安装/更新包。
-
@BrianGottier 谢谢你的回答,我的目录结构是这样的:imgur.com/a/BPhnU
-
这正是它不起作用的原因。供应商目录必须与third_party 处于同一级别。并且 codeigniter 会自动运行 autoload.php,所以你不必自己做。
-
@BrianGottier 我将 vendor 文件夹移到了 third_party 之外,所以现在看起来像这样:imgur.com/a/XcDRl 现在在我的配置中我只需要 $config['composer_autoload'] = TRUE;在我的 index.php 中,我还需要一些东西吗?
-
您只需要
$config['composer_autoload'] = TRUE;。您需要让您的 composer.json 文件与/vendor/和/third_party/处于同一级别。完成后,运行 composer install 和/或 update,因为 composer 需要更新所有包的路径。
标签: php codeigniter oauth-2.0 composer-php