勉強したことのメモ

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

  関連記事

1503646093_image1
Twigの使い方簡易メモ

開発中の案件でテンプレートエンジンのTwigを利用する機会があった。使ってみた感 ...

images
PHPで配列に特定の値が入っているか検索

PHPで配列に特定の値が入っているか検索して trueかfalseを返したい、と ...

msyql-image
MySQLでのエラーについて

エラーログをとるようになってから色々エラーを 見る機会が出来てきたのでメモ。 プ ...

images
PHPでユニークな文字列の作成

PHPでユニークな文字列を作成したかった。MySQLとかのオートインクリメントの ...

images
PHPで「Unable to allocate~」とエラー

PHPで「Unable to allocate memory for pool」 ...

images
CSVファイルを使って郵便番号から住所を抽出する

■ソース <? error_reporting(E_ALL & ~ ...

images
PHPで実行時間の測定

$start_time = microtime(true); /***測定したい ...

msyql-image
MySQLiでSELECT文

MySQLiでSELECT文 ■データ +--+------+ | id | p ...

images
ユーザーエージェントなどユーザー情報を取得する方法

上からUA、IP、ホスト名を取得。 $ua = $_SERVER['HTTP_U ...

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

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