3

PHPでREST APIを設計しています。私はスリムなフレームワークを使用して API を設計しています。メールを送信するページを送信したい。これは、電子メールを送信するための私のコードです:

$app->get('/sendemail', function () {



 require_once "Mail.php";
 $from = "Sender <sender@domain.com>";
 $to = "Recipient <recipient@anotherDomain.com>";
 $subject = "Hi!";
 $body = "Hi,\n\nHey Recipient, you done it...";
 $host = "my host";
 $username = "myuserid";
 $password = "password";
 $headers = array ('From' => $from,
   'To' => $to,
   'Subject' => $subject);
 $smtp = Mail::factory('smtp',
   array ('host' => $host,
     'auth' => true,
     'username' => $username,
     'password' => $password));

 $mail = $smtp->send($to, $headers, $body);

 if (PEAR::isError($mail)) {
   echo("<p>" . $mail->getMessage() . "</p>");
  } else {
   echo("<p>Message successfully sent!</p>");
  }
 ?>
});

これを別のファイルにチェックインすると、電子メールを送信するコードが機能します。しかし、このコードは API では機能しません。

これは生成中のエラーです:-

ここに画像の説明を入力

私はこれのために何をすべきか教えてください。

4

2 に答える 2

2

Slim はオブジェクト指向の方法で PHP エラーにアプローチします。PHP 標準クラスを使用して、すべてのエラーを例外に変換しますErrorException

E_NOTICEエラーには、やなどのエラー レベルがありますE_WARNING。例外はありません。例外があるか、ないかのどちらかです。

お使いの PEAR メーラーのバージョンは、軽微な廃止通知を発行しています。通常は非表示でわかりませんが、例外に変換されているため、Slim はエラーを表示します。これは良いことです。あなたのコードには通知があってはなりません。

これを解決するには、非推奨の機能を回避するためにメーラー クラスを更新するか、自分でエラーを一時的にキャッチすることができます。

function ignoringHandler($level, $str, $file='', $line='', $context=array())
{
    // Tell PHP that we have "processed" the error
    return true;
}

// Change the handler to ours for notices
$slimHandler = set_error_handler('ignoringHandler', E_NOTICE | E_DEPRECATED);

// Your code accessing older library

restore_error_handler();
于 2011-11-16T22:32:00.770 に答える
0

この 2 行が逆になっているのはなぜですか?

$app->get('/sendemail', function () {

<?php

そうではありませんか:

<?php

$app->get('/sendemail', function () {
于 2011-11-12T18:23:20.137 に答える