在Yii 1.1.13中配置Twilio PHP库

时间:2014-04-12 10:00:54

标签: php yii twilio

我正在尝试在Yii上配置Twilio以发送短信但无法配置它。不幸的是,Twilio也无法提供太多帮助。以下是我到目前为止所做的事情:

  1. this link.下载Twilio PHP库
  2. 将文件夹复制到protected / vendors目录
  3. 导入twilio文件夹并在代码中将“require”添加到主文件“Twilio.Php”中。在我接近Twilio之后我才知道这个问题但问题仍然存在。同时,“require_once”和“require”
  4. 我甚至尝试添加以下内容的明确引用,但这甚至不起作用:

    1. 服务/ Twilio / Rest / Accounts.php
    2. 服务/ Twilio / HttpStream.php
    3. 服务/ Twilio / Resource.php
    4. 以下是我的开发环境:

      1. Apache 2.2.22
      2. PHP 5.3
      3. Yii Framework 1.1.13
      4. Windows-7 64位
      5. 以下是我的代码:

        public function SendSMS(){
                     Yii::import('application.vendors.twilio-php.Services.Twilio.Resource.php');
                     Yii::import('application.vendors.twilio-php.Services.Twilio.Rest.Accounts.php');
                     Yii::import('application.vendors.twilio-php.Services.Twilio.ListResource.php');
                     Yii::import('application.vendors.twilio-php.Services.Twilio.HttpStream.php');
                     include 'C:\Projects\EMR\webapp\protected\vendors\twilio-php\Services\Twilio.php';
                     $AccountSid = "SID";
                     $AuthToken = "Token";
                     $client = new Services_Twilio($AccountSid, $AuthToken);
                     $sms = $client->account->sms_messages->create(
                                              "111-222-3333", // From this number
                                              "9999999999", // To this number
                                              "First PHP Test message!"
                                               );
                    // Display a confirmation message on the screen
                    echo "Sent message {$sms->sid}";
        

        }

        以下是我得到的错误的屏幕截图

        enter image description here enter image description here

        非常感谢任何帮助!!!

4 个答案:

答案 0 :(得分:4)

由于Yii有自动加载器和Twilio库一样,你在加载Twilio时需要卸载Yii。这是你如何做到的。

spl_autoload_unregister(array('YiiBase','autoload'));
require Yii::app()->params['TwillioIncludePath'];
spl_autoload_register(array('YiiBase','autoload'));

答案 1 :(得分:3)

我得到了它的工作。

问题是我卸载Yii的方式。最初,我正在卸载Yii自动装载机,但方式略有不正确。我最初的方法是卸载Yii然后执行所有Twilio任务然后加载它。这是不正确的。正确的方法是卸载Yii,加载twilio文件并在加载twilio后立即加载Yii,然后执行其他任务。以下是我的代码:

Yii::import('application.vendor.twilio-php.*');
spl_autoload_unregister(array('YiiBase','autoload')); 
require 'C:\Projects\EMR\webapp\protected\vendors\twilio-php\Services\Twilio.php';
spl_autoload_register(array('YiiBase', 'autoload'));
$AccountSid = "AcoiuntSid";
$AuthToken = "Token";
$client = new Services_Twilio($AccountSid, $AuthToken);
$sms = $client->account->sms_messages->create(
"00000000", // From this number
"99999999", // To this number
"First PHP Test message!"
);

答案 2 :(得分:0)

更改这些陈述

Yii::import('application.vendors.twilio-php.Services.Twilio.Resource.php');

include Yii::getPathOfAlias('application.vendors.twilio-php.Services.Twilio') . '/Resource.php';

答案 3 :(得分:0)

建议您先取消注册Yii自动加载器,然后让twilio加载其类并再次注册Yii自动加载器。在这种情况下,twilio文件夹位于protected / vendors / twilio:

Yii::import('application.vendors.*',true);
spl_autoload_unregister(array('YiiBase','autoload'));
require_once(Yii::app()->basePath."/vendors/twilio/Services/Twilio.php");
spl_autoload_register(array('YiiBase', 'autoload'));
相关问题