在Yii PHP中需要命令

时间:2013-08-16 08:19:27

标签: php yii phpmailer

我正在使用Yii框架进行网站开发。

我正在尝试制作电子邮件cron作业,因为我正在使用PHPMailer。

这是我的 config / console.php

> return array(
>     'basePath'=>dirname(__FILE__).DIRECTORY_SEPARATOR.'..',
>     'name'=>'My Console Application',
> 
>     // preloading 'log' component
>     'preload'=>array('log'),
>     'import'=>array(
>             'application.modules.*',
>             'application.extensions.*',
>             'application.components.*',
>             'application.models.*',
>         ), ....

我的命令/ testCommand.php

class UptimeCheckerCommand extends CConsoleCommand{
    public function run($args) { 
.... 
$warning->send(); 
....

我的组件/ Warning.php

....
require("/protected/extensions/PHPMailer/class.phpmailer.php");
....

错误报告:

PHP Error[2]: require(/protected/extensions/PHPMailer/class.phpmailer.php): fail
ed to open stream: No such file or directory

我已经使用控制器对组件进行了测试,它的工作原理非常好。只有在我尝试使用 yiic test 命令访问它时才会出现错误。

任何帮助将不胜感激

4 个答案:

答案 0 :(得分:2)

'import'=>array(
   ...
   'application.extensions.PHPMailer.*',
   ...
)

并将文件 class.phpmailer.php 重命名为 PHPMailer.php

导入目录不会导入其任何子目录。

答案 1 :(得分:1)

试试这样:

$mailer = Yii::import('application.extensions.phpmailer'); 

然后使用 $ mailer 发送电子邮件

答案 2 :(得分:1)

这是最合适的......在我看来......

Yii::import('application.extensions.phpmailer'); 

然后你可以用这种方式创建一个对象并做必要的事情。

$mail = new PHPMailer();

答案 3 :(得分:0)

感谢您的快速回复。

我已经尝试过上面的一些建议。

来自 Andrey Shatilov 的建议不起作用。

建议 usman allam mazraara 改变:

  

需要( “/保护/扩展/ PHPMailer的/ class.phpmailer.php”);

  

的Yii ::进口( 'application.extensions.PHPMailer.class.phpmailer.php');

无法正常工作,因为文件名中有点(class.phpmailer.php)

因为它,yii认为我在类文件夹中请求phpmailer.php而不是class.phpmailer.php

有效的代码:

  

<强>需要( “../保护/扩展/ PHPMailer的/ class.phpmailer.php”);

不知道为什么会这样,因为/protected/command/testCommand.php中的testCommand.php和/ protected / extensions / PHPMailer /中的phpmailer文件,但是它可以工作。