勉強したことのメモ

webプログラマ見習いが勉強したことのメモ。

エラー処理を1ページにまとめる

      2014/05/23

できるだけまとめておいた方が効率よさそうなのでメモ。

メインのフォルダにlogsファイルを作成し、
下記error.phpを作成。

■error.php
<?
define("ERROR_FILE", "./logs/error.log");
error_reporting(E_ALL ^ E_NOTICE);
ini_set('display_errors',0);
ini_set('log_errors','On');
ini_set("error_log", ERROR_FILE);

function Error_sql ($E_line, $E_sql, $E_error, $E_file, $E_data = '') {
if ($E_error) {
$error = "---------------------\n[SQL error]\n"
. $E_line . "行目\n"
. $E_sql . "\n"
. $E_error . "\n"
. $E_file . "\ntime->"
. date('Y/m/d H:i:s') . "\n"
. $E_data . "\n---------------------\n";
error_log($error, 3, ERROR_FILE);
}
}

if ($_POST['mode'] == 'js_error') {
$error_body = "---------------------\n[JavaScript error]\n"
. $_POST['lineNumber'] . "行目\n"
. $_POST['errorMsg'] . "\n"
. $_POST['errorUrl'] . "\ntime->"
. date('Y/m/d H:i:s') . "\n---------------------\n";
file_put_contents(ERROR_FILE, $error_body, FILE_APPEND);
echo $error_body;
}

$js_error_function = "
<script>
window.onerror = function(errorMsg, errorUrl, lineNumber) {
console.log(1);
$.ajax({
data : {mode : 'js_error', errorMsg : errorMsg, errorUrl : errorUrl, lineNumber : lineNumber},
url : './index.php',
type : 'post'
});
};
</script>
";
?>

■例
<?
require_once("./logs/error.php");
$sql = 'test';
$code = 12345;
mysql_query($sql); //db接続してないのでここでエラー発生
Error_sql(__LINE__, $sql, mysql_error(), $_SERVER["PHP_SELF"], "\ncode->" . $code); //エラーログに書き込み
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transtional//EN" "http://www.w3c.org/TR/html4/loose.dtd">
<meta http-equiv="content-type" content="text/html"/>
<meta cherset = "UTF-8">
<html lang="ja">
<head>
<title>タイトル</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<?=$js_error_function;?>
</head>
<body>
<h1>タイトル</h1>
<input type="button" value="error!" onClick="error_test();"><!--ボタン押しても関数ないのでエラー-->
</body>
</html>

 - PHP, エラー管理

  関連記事

images
独自タグからタグへの変換function

独自タグは##IMG1##みたいな感じ。 画像ファイル名は「ファイルパス/seq ...

images
PHPで配列を検索クエリ化、検索クエリを配列化

PHPで配列を検索クエリ化、検索クエリを配列化する方法のメモ。   ■ ...

images
$_SERVER['PHP_SELF']に脆弱性あり

formのaction属性とかページングのリンクとかで、 <form ac ...

msyql-image
phpMyAdminより高速で軽量なAdminerが凄い

MySQLをGUIで管理できるphpMyAdmin。特に不満はないんだけど、もっ ...

images
PHPにて自動でファイルを呼び出す(auto_prepend_file)

設定ファイルとかをinclude('config.php')みたいに、 いちいち ...

images
PHPで日付の比較

以前に「締切日を設けて、今日の日付と比較して分岐させる」というもので 日付の比較 ...

images
PHPで配列じゃないものに対してソート

PHP Warning:  sort() expects parameter 1 ...

images
PHPで配列かどうかを調べる

配列か否かを調べたいケースがあり、確認すると ばっちりそのままの関数発見。 is ...

images
PHPバージョンの確認

PHPでバージョンの確認をする際にphpinfo()を 使って調べてたけど、バー ...

images
ページング処理用PHP

/* @内容 ページング処理のfunction @使い方 //******親ペー ...