エラー処理を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で引数の先頭に&(アンパサンド)をつける参照渡し(リファレンス渡し)について
他社が作成されたPHPのソースコードを拝見していると関数の引数の頭に&( ...
-
-
PHPでjpg / png画像をAVIF形式の画像に変換する方法
PHPでjpg / png画像をAVIF形式の画像に変換しサーバに保存したい。W ...
-
-
formにhCaptchaを組み込み、PHPで結果を検証する方法
お問い合わせフォーム等でGoogle reCAPTCHAではなくhCaptcha ...
-
-
file_get_contentsを使用する際にタイムアウト設定
20秒に1回自動でリロードするページにて file_get_contentsを使 ...
-
-
PHPでスマホ(iPhone / Android)に画像をダウンロードさせる方法とダウンロード後の保存場所について
PHPで作ったシステムにスマホ(iPhone / Android)でアクセスし何 ...