人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPのエラーログについて

PEAR::Logでエラーログを取りたいです。

require_once "Log.php";
$o_log = Log::factory("file","error.log","sample");
$o_log -> log("aaa",PEAR_LOG_NOTICE);

こんな感じでエラーログが取れるよ!と本に書いてあったのですが、これを全てのページに貼っても、誰かがページにアクセスしたときに「aaa」と書かれたログが増えるだけで、エラーログが取得できません。


いまいち使い方がわからないのですが、
「エラーが発生したときに、そのエラー文や、箇所をログファイルに記録する」事はできないのでしょうか。


Pearではなくて、PHPの標準関数でも構いませんので、どなたかよろしくお願いします。

●質問者: tokyosmash
●カテゴリ:インターネット ウェブ制作
✍キーワード:AAA Factory Pear PHP いまいち
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● KID the Euforia
●50ポイント

エラーが発生しそうなところで

$o_log -> log($php_errormsg, PEAR_LOG_NOTICE);

としたらいかがでしょう。

ただし、track_errorsをtrueにしている必要があります。

エラー発生箇所も記録したいのであれば、

$php_errormsg . "エラー発生箇所の名前"などにすれば

よいと思います。

エラーログは受動的に出てくるものではなく、能動的に出すものです。

本ではエラーログが取れると書いていたのでしょうが、エラーログを出すのではなく

任意のメッセージをログとして出力することができるという程度の意味です。


http://www.php.net/manual/ja/reserved.variables.php#reserved.var...

http://www.php.net/manual/ja/ref.errorfunc.php#ini.track-errors


また、log4phpでログを発生させた箇所などを自動で記録させることもできます。

http://www.doyouphp.jp/tips/tips_log4php.shtml

◎質問者からの返答

回答ありがとうございます。

>エラーログは受動的に出てくるものではなく、能動的に出すものです。

大変わかりやすい説明ありがとうございます。

納得できました。

能動的に出すメリットが思いつかないのですが、恐らくあるのでしょうね。

とりあえず今の自分に必要なのはwizemperorさんの方法ですが、エラー処理等を組み込んだ時にはこちらの方法が役に立つような気もします。

ご丁寧にありがとうございました。大変勉強になりました!


2 ● wizemperor
●40ポイント ベストアンサー

PHP自体のエラーは、自動的に記録する設定になっていることが多いと思います。

サーバのログディレクトリを確認してみてください。


ログがない場合にはphp.iniで設定を変更すれば可能です。

レンタルサーバなどで、php.iniが編集できない場合は、.htaccessに次のような感じに書いて置いておきます。


php_flag display_errors Off
php_flag log_errors On
php_value error_log "./error.log"

error_logにログファイル名を指定します。

書き込み可能なパーミッションに変更しておいてください。

これは外部からはアクセスできない場所に作成するべきです。

◎質問者からの返答

回答ありがとうございます。

今の自分にはこちらの方法が適していると思いましたので、早速使わせてもらいます。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ