とりあえず本番でエラーが起きてたら開発MLへメールしたい。レガシーPHP案件にとりかかる時はいつもやるphp.iniでメール飛ばす設定をしようとしたら、CakePHPがエラーを捕まえているので飛ばない。
大抵のフレームワークではググるとMailを飛ばすLoggerが見つかるもんだが、CakePHP1.3用のが見つからなかったので書いときました。
<?php
/**
* メールを送るロガー
*
* 使い方:
* // app/config/bootstrup.php:
* CakeLog::config('mailLog', array(
* 'engine' => 'MailLog',
* 'to' => 'to@example.com',
* 'from' => 'from@example.com'
* ));
*/
class MailLog
{
private $to;
private $from;
/**
* オプションを設定する
*
* @param array $options メールのto、fromの設定
* @return void
*/
public function __construct($options = array())
{
if (isset($options['to'])) {
$this->to = $options['to'];
}
if (isset($options['from'])) {
$this->from = $options['from'];
}
}
/**
* ログをメールで送る(ログを書く)
*
* @param string $type エラーの種類
* @param string $message エラーの内容
* @return void
*/
public function write($type, $message)
{
$subject = "[{$type}] ".mb_substr($message, 0, 32);
mb_send_mail($this->to, $subject, $message, "From: {$this->from}");
}
}
https://github.com/milk1000cc/cakephp_exception_notifier
RailsのException Notificationを参考にしているらしいので、komagataさんにも使いやすいかもしれません。
これもCakePHP1.3系の案件ではほぼ必須で使っていますので、なかなかよいかと思います。
ちなみに2.x系では
https://github.com/k1LoW/Exception
にて開発中です。
設定変更はREADMEに書いてありますので参考にしてください。