Beispiel #1
0
 /**
  * 最後のエラーを取得
  *
  * <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>";
         }
     }
 }