【问题标题】:Configuring Twilio PHP Library in Yii 1.1.13在 Yii 1.1.13 中配置 Twilio PHP 库
【发布时间】:2015-03-01 05:21:44
【问题描述】:

我正在尝试在 Yii 上配置 Twilio 以发送 SMS,但无法配置它。不幸的是,Twilio 也帮不上什么忙。以下是我到目前为止所做的:

  1. this link. 下载了 Twilio PHP 库
  2. 将文件夹复制到 protected/vendors 目录
  3. 导入 twilio 文件夹并在代码中将“require”添加到主文件“Twilio.Php”中。我在接触 Twilio 后才知道这一点,但问题仍然存在。“require_once”和“require”都试过了

我什至尝试添加以下内容的显式引用,但这甚至不起作用:

  1. 服务/Twilio/Rest/Accounts.php
  2. 服务/Twilio/HttpStream.php
  3. Services/Twilio/Resource.php

以下是我的开发环境:

  1. Apache 2.2.22
  2. PHP 5.3
  3. Yii 框架 1.1.13
  4. Windows-7 64 位

以下是我的代码:

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}";

}

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

非常感谢任何帮助!!!

【问题讨论】:

    标签: php yii twilio


    【解决方案1】:

    我让它工作了。

    问题在于我卸载 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】:

      由于 Yii 和 Twilio 库一样具有自动加载器,因此您需要在加载 Twilio 时卸载 Yii。以下是你的做法。

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

      【讨论】:

      • 大部分时间我使用来自 Yii 的 Yii::import() 函数而不是 require()。我不知道哪个更好。
      【解决方案3】:

      改变你的这些陈述

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

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

      【讨论】:

        【解决方案4】:

        建议你先注销 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'));
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2013-07-02
          • 1970-01-01
          • 1970-01-01
          • 2012-10-08
          • 1970-01-01
          • 1970-01-01
          • 2014-05-15
          相关资源
          最近更新 更多