勉強したことのメモ

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, エラー管理

  関連記事

MySQLで使用するインデックスを指定する

ちゃんと指定してるのにインデックスが使用されていない場合、 オプティマイザに知ら ...

CodeigniterでCSSやJSファイルを読み込む

CodeigniterでCSSやJSファイルを読み込みたかった。また、それをヘッ ...

PHPで他サーバにファイルをアップロードする2

formで画像を送信した後、他サーバにファイルをアップロードしたかった。以前はP ...

PHPでプロキシ経由で他サーバーに接続

PHPでfile_get_contentsやcurlで他サーバに接続する際に自サ ...

フォームデータを一気に取得

<? error_reporting(E_ALL & ~E_NOT ...

Ajaxのクロスドメイン

クロスドメイン対策にて色々あるみたいだけど 簡単そうで尚且つ実践でも使えたのでメ ...

画像削除用function

ファイルパス、拡張子、seq番号、画像番号を渡してあげるだけ。 拡張子部分があれ ...

PHPとSQLiteで簡易BBSの作成

PHPとSQLiteの練習で簡易掲示板を作ったのでメモ。   &nbs ...

PHP側での画像最大アップロードサイズの確認

画像がアップロードできず、恐らくサイズ指定にひっかかっているので 最大サイズを調 ...

体重管理をPHPで

体重とBMIを管理する画面をPHPで作ってみようと思った。 ソースは下記の通り。 ...