使用CodeIgniter

时间:2017-03-09 08:39:41

标签: php facebook codeigniter sdk composer-php

我有一个CodeIgniter应用程序。我一直试图将其设置为使用Facebook ADS SDK(https://github.com/facebook/facebook-php-ads-sdk)。

我想在我的控制器中使用简单的行,如:

use FacebookAds\Object\CustomAudience;
use FacebookAds\Object\Fields\CustomAudienceFields;
use FacebookAds\Object\Values\CustomAudienceSubtypes;

$audience = new CustomAudience(null, 'act_123123');

我创建了composer.json文件:

{
    "require": {
        "facebook/php-ads-sdk": "2.8.*"
    }
}

我通过命令

php composer.phar install --no-dev

一切都很好。它为我安装了autoload.php和外部facebook文件夹。

现在谈到我需要让它与CodeIgniter一起工作的部分时,我经常会遇到错误。

我尝试了两种不同的方法:

首先将它包含在我的index.php中,如下所示:

include_once 'application/vendor/autoload.php';
require_once BASEPATH.'core/CodeIgniter.php';

但是我因为没有加载应用程序/核心文件夹中的类而遇到错误(Back_Controller正在扩展CI_Controller,我在我的每个控制器中使用Back_Controller,我也有My_Model和Front_Controller)。

第二个方法: 使用CodeIgniter的功能将Auto-loader与Composer一起使用。所以我改变了配置:

$config['composer_autoload'] = TRUE;

这两种方法都给我带来了同样的错误:

  

“致命错误:第4行的/public_html/application/controllers/admin/Shops.php中找不到类'Back_Controller'

     

警告:include():open_basedir限制生效。   文件(application / errors / html / error_php.php)不在允许范围内   路径:()在/public_html/system/core/Exceptions.php第269行“

如何设置它以便Facebook SDK实际上与CodeIgniter一起使用? 任何帮助将非常感激。谢谢。

我认为其中一个解决方案是将“autoload”添加到composer.json中,以便加载我的核心类,但我无法弄清楚它应该如何。我试过了:

"autoload": {
    "psr-4": {
        "Back_Controller\\":"core/"
    }
}

2 个答案:

答案 0 :(得分:0)

尝试以下方法:

包含主要的Api文件

include APPPATH.'vendor/wherever_your_sdk_is/FacebookAds/Api.php';

然后执行以下操作......根据文档......

use FacebookAds\Api;

// Initialize a new Session and instanciate an Api object
Api::init($app_id, $app_secret, $access_token);

// The Api object is now available trough singleton
$api = Api::instance();

答案 1 :(得分:0)

想出来。 我刚刚添加了" autoload"到composer.json自动加载我的核心文件,现在我尝试过的两个解决方案 - 工作。

"autoload": {
    "psr-4": {
        "":"core/"
    }
}