メイン
   XOOPS2バグ
     カテゴリがあるモジュールの動作不良 (XREA)

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
dendeke
投稿日時: 2005/8/25 1:33
長老
登録日: 2004/12/22
居住地: 東京
投稿: 1042
Re: カテゴリがあるモジュールの動作不良 (XREA)

casperさん、こんにちわ。

引用:
フォーラム検索キーワード: Notice Undefined 真っ白
といったように、問題アリアリのものもあるような気が。
(設定やインストール方法が間違っているケースですが)

そうですね、いろいろ状況に応じて考えなければならない場合もあるようですね。

ただ、ご提示いただいた関連スレッドでは、Noticeと一緒にWarningかFatalのエラーが出ており、(Noticeではなく)それが原因である場合が殆どのようで、自分もこれまでエラー提示された場合にそれがNoticeだった時には、ほとんど無視しても大丈夫と回答してきていただけに、Noticeエラーの実害(FatalやWarninと列挙されている場合ではなく)を知りたいと思ったわけです。 実際、現在安定稼動させている自分の2つのXOOPSサイトもPHPデバックをオンにするとNoticeエラーがかなり出ますが、これによる実害はいまのところ認識できず、先にも書きましたが標準モジュールにもNoticeエラーってありますよね? 実際のところ、どうなんでしょうね・・・

GIJOE
投稿日時: 2005/8/25 5:55
長老
登録日: 2003/4/3
居住地:
投稿: 2137
Re: カテゴリがあるモジュールの動作不良 (XREA)

dendekeさん、こんにちは。

引用:
ただ、ご提示いただいた関連スレッドでは、Noticeと一緒にWarningかFatalのエラーが出ており、(Noticeではなく)それが原因である場合が殆どのようで、自分もこれまでエラー提示された場合にそれがNoticeだった時には、ほとんど無視しても大丈夫と回答してきていただけに、Noticeエラーの実害(FatalやWarninと列挙されている場合ではなく)を知りたいと思ったわけです。

えっと、私自身、このフォーラムでも「Noticeは気にするな」と結構書いているので、それをお読みになられたのだとしたら、私にもちょっと責任ありますかね。
それでも、私の見解では、NoticeというのはあくまでNoticeです。「お知らせ」に過ぎません。

引用:
Noticeエラーは「なんとか動くけど問題はあり」ます。だからPHPデバッグモードで表示されています。

これは違うと思います。
トラブルがあった時に解決するための糸口であって、トラブルさえなければ、表示されたとしても特に問題はありません。
だからphp.iniにおける error_reporting の初期値では、E_NOTICE は外されているのだと思います。
例えば、

$id = intval( $_GET['id'] ) ;

というコードがあったとして、idが指定されていなければ、$id にはキャストされた(?)、0が入るわけです。この場合、Noticeは出ますが、一意に決まる動作です。「問題」ありますか?

ただ、私自身は、Noticeが出るコーディングは嫌っています。
なぜなら、Noticeは、プログラマーにとって非常に重要な意味を持つので、デフォルトでNoticeも表示するようにしているからです。

上の例でも、指定がなければ0だ、とプログラマーが把握した上であれば、
$id = intval( @$_GET['id'] ) ;
なんてするだけでもOKです。(私は、=empty()?:構文をつかいますが)

今回のケースでは、トラブルが解決できていないわけで、それを解決するために、Notice情報を利用するのは当然のことです。大事な「手がかり」ですから。

引用:
実際、現在安定稼動させている自分の2つのXOOPSサイトもPHPデバックをオンにするとNoticeエラーがかなり出ますが、これによる実害はいまのところ認識できず、先にも書きましたが標準モジュールにもNoticeエラーってありますよね? 実際のところ、どうなんでしょうね・・・

それは、標準モジュールだからです。良くも悪くも、そのレベルのコーディングだ、ということですね。
トラブルさえ出なければ、別段気にしなくて良い、というのは、上に書いた通りです。

でもって、今回の件ですが、単に register_long_arrays なんてオチじゃないんでしょうか? cidがとれてないのなら、それを真っ先に疑うべきですが。GETからcidを取得できていないのですから、MySQLバージョンうんぬんまで行きません。

.htaccess に

php_flag register_long_arrays on

に1行追加で万事解決とか。

dendeke
投稿日時: 2005/8/25 7:08
長老
登録日: 2004/12/22
居住地: 東京
投稿: 1042
Re: カテゴリがあるモジュールの動作不良 (XREA)

GIJOEさん、こんにちわ。

毎回、丁寧、詳細、かつ、わかりやすい解説ありがとうございます。

たかがNotice、されどNotice・・・

まだまだ奥深いところまで理解できていないようで、精進に励みます :-)

スレ主のIkkkiさんも、これで解決するといいですね。

※スレの主題から外れた話題が続いたことをお詫びいたします。

Ikkki
投稿日時: 2005/8/25 7:39
常連
登録日: 2003/5/18
居住地:
投稿: 45
Re: カテゴリがあるモジュールの動作不良 (XREA)

GIJOEさん、皆さん、ありがとうございます。

Webサイトのroot直下の.htaccessに
引用:
LayoutIgnoreURI *
php_flag register_long_arrays On
modules/mydownloadsの下の.htaccessに
引用:
php_flag register_long_arrays On

を入れていますが、いずれも変化ありませんでした。

カテゴリIDを取得できなくなる要因として、他に何か考えられるでしょうか?
上級者の皆様にアドバイスいただければ幸いです。

:cry: 
Ikkki
投稿日時: 2005/9/1 11:53
常連
登録日: 2003/5/18
居住地:
投稿: 45
Re: カテゴリがあるモジュールの動作不良 (XREA)

カテゴリIDを取得できなくなる要因として、他に何か考えられるでしょうか?
上級者の皆様にアドバイスいただければ幸いです。

SeeDa
投稿日時: 2005/9/1 13:36
一人前
登録日: 2005/6/15
居住地: なごや
投稿: 123
Re: カテゴリがあるモジュールの動作不良 (XREA)
今回は関係ないと思いますが、考えられる要因として一応:-)
hogeidの整数値が取得できない理由に、GIJOEさんのXoops Protectorの「ID風変数の強制変換」が起因することがあります。
defaultは「いいえ」となっていますが、これを「はい」にすると…
引用:
変数名がidで終わるものを、数字だと強制認識させます。myLinks派生モジュールに特に有効で、XSSなども防げますが、一部のモジュールで動作不良の原因となる可能性があります。

ご質問の公式モジュールはカテゴリーID(cid)を整数値で渡してると思われますので、Ikkkiさんの解決には役に立たないでしょうが、後にこのスレッドを参照されるかたのために書かせていただきました。

GIJOE
投稿日時: 2005/9/2 6:48
長老
登録日: 2003/4/3
居住地:
投稿: 2137
Re: カテゴリがあるモジュールの動作不良 (XREA)

SeeDaさん、こんにちは。

Typoだとは思いますが、
引用:
hogeidの整数文字列値が取得できない理由に、GIJOEさんのXoops Protectorの「ID風変数の強制変換」が起因することがあります。

整数値ならちゃんと取得できます。(あえて文字列比較されたら別ですが)

個人的には、副作用があったとしても、このオプションをONにしていただきたいところですが。(あまりにもXSSやSQL Injectionに無頓着なモジュールが多いため)

もちろん、今回の件とは無関係です。

さて本題ですが、$_GET['cid'] が取得出来ない、というのであれば、むしろデバッグも簡単です。

mainfile.php のいろんな場所に、

var_dump( $_GET['cid'] ) ;

を挟み込めば良いのです。

どこかに、unset( $_GET['cid'] ) ; していたりすれば、途中で急に取得できなくなるので、どの部分かの目星はつきます。

mainfile.php の最初(もちろん <?php よりは後)でも取得できていないのであれば、何か変なauto_prepend_fileが入っている、もしくは、もっと上位でmod_securityのチェックが入っている、あたりに可能性が絞られます。

kilica
投稿日時: 2005/9/9 23:01
常連
登録日: 2005/2/18
居住地:
投稿: 44
Re: カテゴリがあるモジュールの動作不良 (XREA)
引用:
カテゴリIDを取得できなくなる要因として、他に何か考えられるでしょうか?
上級者の皆様にアドバイスいただければ幸いです。

初級者ではありますが…。

関係ないかもしれませんが,僕も今日同じような現象になりました(正確には今日「気づいた」)。

障害の内容は,
・フォーラム(newbb)のカテゴリを選択すると以下のエラーが発生する。

引用:
Fatal error: Call to a member function on a non-object in
/virtual/arsmagica/public_html/modules/newbb/viewforum.php on line 87

・フォーラムで記事にリプライしようとすると上のエラーが発生する

・ニュースの昔の投稿を見ようとすると,投稿が存在しないというメッセージが出る

・新規にユーザ登録をしようとすると,免責に同意していない旨のメッセージが出る。もちろんチェックはつけている

といったところです。

でもってまだ本当の原因は分かっていないのですが,とりあえず
newbb で viewforum.php にエラーにあるように,Wordpress モジュールを外したところ,上記エラーがぴたりと収まりました。

8月に Wordpress(0.3.3)のパッチを宛てたので,そこで何かまずったかなあと今調べています … といっても分からないかもしれませんが(^ ^;。

GIJOE
投稿日時: 2005/9/10 6:20
長老
登録日: 2003/4/3
居住地:
投稿: 2137
Re: カテゴリがあるモジュールの動作不良 (XREA)

kilicaさん、こんにちは。

引用:
でもってまだ本当の原因は分かっていないのですが,とりあえず
newbb で viewforum.php にエラーにあるように,Wordpress モジュールを外したところ,上記エラーがぴたりと収まりました。

8月に Wordpress(0.3.3)のパッチを宛てたので,そこで何かまずったかなあと今調べています … といっても分からないかもしれませんが(^ ^;。

気になったので、調べてみました。
確かに、0.3.3のパッチには、wp-config.php に、register_globals on 対策コードが含まれていますね。(GPCSの各パラメータと同名の$GLOBALSをunset()してしまう)

しかも、ブロック呼び出しでもこの部分を通過してしまうため、

1
2
3
4
5
6
include '../../mainfile.php' ;
$id = intval( @$_GET['id'] ) ;
 
include XOOPS_ROOT_PATH.'/header.php' ;
 
($id の利用)

みたいな順番だと、おかしくなるでしょう。

さすがにこれは、WordPressME 0.3.3 の問題ですね。
とりあえず、0.5系であれば、そういう部分はなさそうなので、そっちにアップグレードする、というのが一番の解決法でしょうか。

kilica
投稿日時: 2005/9/10 9:58
常連
登録日: 2005/2/18
居住地:
投稿: 44
Re: カテゴリがあるモジュールの動作不良 (XREA)

こんにちは,GIJOE さん。調べていただきありがとうございます。
これは今の僕では絶対分からなかったです。

引用:
確かに、0.3.3のパッチには、wp-config.php に、register_globals on 対策コードが含まれていますね。(GPCSの各パラメータと同名の$GLOBALSをunset()してしまう)

しかも、ブロック呼び出しでもこの部分を通過してしまうため、
(略)
みたいな順番だと、おかしくなるでしょう。

とりあえず、0.5系であれば、そういう部分はなさそうなので、そっちにアップグレードする、というのが一番の解決法でしょうか。

どこかでは Wordpress 0.5.0 にアップグレードしようと思っていましたので,この機会にあげてみました。

しかし,0.5.0 でも同じエラーが発生してしまいました。

とりあえず急場しのぎに,ご指摘のありました wp-config.php の冒頭の register_globals の部分をコメントアウトして使っています(よろしくない対処ですが)。

nobunobu さんには,nobunobuさんのサイトのフォーラムで報告しておきましたので,ご対応いただけるのをまとうかと思います。

« 1 (2)
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

 
To Top