0

Web 開発に Yii フレームワークを使用しています。

私はPHPMailerを使用しているため、電子メールのcronジョブを作成しようとしています。

ここに私の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(); 
....

私のコンポーネント/警告.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

4 に答える 4

1

次のようにしてみてください。

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

次に、$mailerを使用してメールを送信します

于 2013-08-16T08:32:53.973 に答える
1
Yii::import('application.extensions.phpmailer'); 

次に、この方法でオブジェクトを作成できます。

$mail = new PHPMailer();
于 2013-08-16T11:43:59.123 に答える
0

早速のお返事ありがとうございます。

私はすでに上からいくつかの提案を試みました。

Andrey Shatilovの提案はうまくいきませんでした。

usman allammazraaraからの変更の提案:

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

Yii::import('application.extensions.PHPMailer.class.phpmailer.php');

ファイル名にドットが含まれているため、どちらも機能しません (class.phpmailer.php)

そのため、yii は class.phpmailer.php の代わりにクラス フォルダで phpmailer.php を要求すると考えました。

動作するコード:

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

私のtestCommand.phpが/protected/command/testCommand.phpにあり、私のphpmailerファイルが/protected/extensions/PHPMailer/にあるため、なぜこれが機能するのかわかりませんが、機能します。

于 2013-08-19T04:12:05.187 に答える