/** * 最後のエラーを取得 * * <pre> * _errorクエリーで最後のエラーを表示させます。 * エラー表示がうまく行かない時に使用します。 * </pre> * * <code> * ?_error エラー表示 * ?_error=koriyama@bear-project.net エラーメール送信 * ?_error=/tmp/error.log エラーログファイルを書き込み * </code> * * @return void */ public static function onShutdownDebug() { if (function_exists('FB')) { $errors = Panda::getOuterPathErrors(); FB::group('errors', array('Collapsed' => true, 'Color' => 'gray')); foreach ($errors as $code => $error) { switch (true) { case $code == E_WARNING || $code == E_USER_WARNING: $fireLevel = FirePHP::WARN; break; case $code == E_NOTICE || $code == E_USER_NOTICE: $fireLevel = FirePHP::INFO; break; case $code == E_STRICT || $code == E_DEPRECATED: $fireLevel = FirePHP::LOG; break; default: $fireLevel = FirePHP::ERROR; break; } FB::send($error, '', $fireLevel); } FB::groupEnd(); } $lastError = error_get_last(); $err = print_r($lastError, true); if (isset($_GET['_error'])) { $errorTo = $_GET['_error']; if ($errorTo == '') { $errorCode = Panda::$phpError[$lastError['type']]; Panda::error("{$errorCode} (Last Error)", "{$lastError['message']}", '', (array) $lastError); return; } elseif (strpos($errorTo, '@')) { error_log($err, 1, $errorTo); } elseif (is_writable(dirname($errorTo))) { error_log("{$err}\n\n", 3, $errorTo); } else { echo "<p style=\"color:red\">Error: Invalid destination for _error [{$errorTo}]</p>"; } } }