BlognPlusという、PHPで作られたブログシステムを利用しています。


動作自体は正常に見えるのですが、error_logに

PHP Notice: Undefined index: ???? in /**/db_mysql.php on line 113
(????はカテゴリー名。カテゴリーの数だけ出る)



PHP Notice: Use of undefined constant blogn_change_url - assumed 'blogn_change_url' in /**/index.php on line 1424

などというエラーが大量に記録されています。(三日で500MBを越えるほど)

動作に問題がないものとして、これらのエラーをエラーログに保存しないようにしたいのですが、何をどう設定すればいいのでしょうか。

回答の条件
  • 1人2回まで
  • 登録:2007/03/19 15:58:22
  • 終了:2007/03/20 09:33:02

ベストアンサー

id:nandedarou No.3

nandedarou回答回数230ベストアンサー獲得回数342007/03/20 03:31:18

ポイント100pt

配列の添え字の扱いが好ましくないという警告ですね。

一つ目のエラーは、その添え字に対応する値がセットされていないのに、その添え字に対応する値を参照すると出るエラーです。

二つ目のエラーは、添え字が''で囲ってないときにでるエラーです。(定数として定義してある場合はエラーはでません。)

どちらのエラーも、絶対にタイプミスでないなら無視してもプログラムは正常に動きます。


このエラーを記録しない為には、

error_reportingディレクティブで、E_NOTICE(=8)を現在の設定値から除外する必要があります。

現在の値が、E_ALLだとして、そこからE_NOTICEを(ビット演算で)除外する例を示します。


php.iniでの設定例

error_reporting = E_ALL & ~E_NOTICE


.htaccessでの設定例

ephp_value rror_reporting E_ALL & ~E_NOTICE

※だめなら、「E_ALL & ~E_NOTICE」を6135や8183にしてみて下さい。


phpのコードの中での設定例

error_reporting(E_ALL & ~E_NOTICE);


※php.iniよりも、.htaccessが優先されます。

※.htaccessよりも、phpのコードの方が優先されます。

※よって、php.iniで設定しても、結果が変わらないときは、、.htaccessやphpのコードの中で設定されている可能性があるので、それを修正する必要があります。

http://jp2.php.net/manual/ja/ref.errorfunc.php#ini.error-reporti...

http://jp2.php.net/manual/ja/language.operators.bitwise.php

id:harrypotter

ありがとうございます。

php.iniに記述する方法で、エラーログを吐き出すのが止まりました。

元のコードを修正してもらうのが一番なんでしょうけど、公式フォーラムに同様の投稿があるのに対応されないんです。

何かスクリプトに手を入れたときだけ再度エラーログを記録するなどして運用したいと思います。

2007/03/20 09:31:53

その他の回答(2件)

id:ryouchi No.1

ryouchi回答回数23ベストアンサー獲得回数12007/03/19 16:41:49

ポイント15pt

Blognのバージョンは何でしょう?

http://72.14.235.104/search?q=cache:1cJne8h_ZKAJ:www.blogn.org/b...

を見ているとバージョンによってはバグの可能性もありそうです。

blogn_change_url は RSS生成に利用するものだと思われます。

また、「undefined constant blogn_change_url」というphpのエラーメッセージから推測すると、

define(blogn_change_url,"xxxxx");

などという文が定義されていない可能性もありますね。

id:harrypotter

上のエラーはほんの一例ですので、blogn_change_urlだけの問題ではありませんが、verは2.3.2です。

それ以上のバージョンは私の環境ではまともに動きませんので、バージョンアップでの対応は現在出来ません。

希望しているのはBlogn側の設定でなく、php.iniなどPHP側の設定です。

2007/03/19 16:55:20
id:ryouchi No.2

ryouchi回答回数23ベストアンサー獲得回数12007/03/19 17:24:04

ポイント5pt

php.iniの「log_errors」を

log_errors = Off

とか「log_errors_max_len」

log_errors_max_len = 0

ということでしょうか?

id:nandedarou No.3

nandedarou回答回数230ベストアンサー獲得回数342007/03/20 03:31:18ここでベストアンサー

ポイント100pt

配列の添え字の扱いが好ましくないという警告ですね。

一つ目のエラーは、その添え字に対応する値がセットされていないのに、その添え字に対応する値を参照すると出るエラーです。

二つ目のエラーは、添え字が''で囲ってないときにでるエラーです。(定数として定義してある場合はエラーはでません。)

どちらのエラーも、絶対にタイプミスでないなら無視してもプログラムは正常に動きます。


このエラーを記録しない為には、

error_reportingディレクティブで、E_NOTICE(=8)を現在の設定値から除外する必要があります。

現在の値が、E_ALLだとして、そこからE_NOTICEを(ビット演算で)除外する例を示します。


php.iniでの設定例

error_reporting = E_ALL & ~E_NOTICE


.htaccessでの設定例

ephp_value rror_reporting E_ALL & ~E_NOTICE

※だめなら、「E_ALL & ~E_NOTICE」を6135や8183にしてみて下さい。


phpのコードの中での設定例

error_reporting(E_ALL & ~E_NOTICE);


※php.iniよりも、.htaccessが優先されます。

※.htaccessよりも、phpのコードの方が優先されます。

※よって、php.iniで設定しても、結果が変わらないときは、、.htaccessやphpのコードの中で設定されている可能性があるので、それを修正する必要があります。

http://jp2.php.net/manual/ja/ref.errorfunc.php#ini.error-reporti...

http://jp2.php.net/manual/ja/language.operators.bitwise.php

id:harrypotter

ありがとうございます。

php.iniに記述する方法で、エラーログを吐き出すのが止まりました。

元のコードを修正してもらうのが一番なんでしょうけど、公式フォーラムに同様の投稿があるのに対応されないんです。

何かスクリプトに手を入れたときだけ再度エラーログを記録するなどして運用したいと思います。

2007/03/20 09:31:53
  • id:nandedarou
    (勘違いしてコメントしたので、書き直しました。何度もすみません。)
    .htaccessでの設定例で、スペルミスがありました。
    (誤)php_value error_reporting
    (正)php_value error_reporting

    ※なお、httpd.conf でも同様に設定できます。
    ※httpd.conf や.htaccessでは、E_ALLやE_NOTICEなどのPHPの定数が使用できない為、数値で指定する必要があります。
    (例)php_value error_reporting 6135
  • id:harrypotter
    私も勘違いしていて、php.iniの設定でなく、各コードに
    error_reporting(E_ALL & ~E_NOTICE);
    と追加したのが有効になっているようです。
  • id:nandedarou
    >(誤)php_value error_reporting
    は、「(誤)ephp_value rror_reporting」の間違いです。
    (タイプミスのタイプミスをしてしまいました。笑。)

    >私も勘違いしていて、php.iniの設定でなく、各コードにerror_reporting(E_ALL & ~E_NOTICE);と追加したのが有効になっているようです。

    php.iniやhttpd.conf はWebサーバを再起動しないと、変更が反映されません。再起動をする権限がない場合や他のプログラムへの影響を避けたい場合は、.htaccessで指定するか、最初の方に読み込まれるコードで指定することになるでしょう。
  • id:nandedarou
    >※httpd.conf や.htaccessでは、E_ALLやE_NOTICEなどのPHPの定数が使用できない為、数値で指定する必要があります。
    >(例)php_value error_reporting 6135

    と、コメントに書きました。マニュアルを読んで、そう理解したのですが、以下の例を紹介している本がありました。

    .htaccessでの設定例
    ephp_value rror_reporting "E_ALL & ~E_NOTICE"

    このように、""で囲めばPHPの定数を使用できるのかもしれません。(まだ、私は検証していません。)

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません