我有一个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/"
}
}
答案 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/"
}
}