msg# 1
はじめまして ishizukaです
pico1.2を使用しているのですが、コンテンツの更新を行うと画面が真っ白になってしまい困っています。
rootで作成したコンテンツをroot以外のユーザで更新をしていて、問題なく操作できていたのですが、コンテンツのソースがある一定サイズを超えると、root以外のユーザでの更新が出来なくなります。(「編集内容を登録」や「プレビュー」ボタンを押下すると真っ白い画面になる。)
rootでは大きなサイズでも更新でき、root以外でも、サイズが小さい分には更新できますので、権限の問題ではなさそうなのですが、どの辺りを調べれば解決できそうか教えてください。
ためしに1.6にアップデートしてみましたが、現象は変わりませんでした。
rootかそれ以外かで挙動が変わるようなことがあるのでしょうか?
よろしくお願いします。
Votes:3
Average:10.00
msg# 1.1
ishizukaさん、こんにちは。
Quote:
pico1.2を使用しているのですが、コンテンツの更新を行うと画面が真っ白になってしまい困っています。
rootで作成したコンテンツをroot以外のユーザで更新をしていて、問題なく操作できていたのですが、コンテンツのソースがある一定サイズを超えると、root以外のユーザでの更新が出来なくなります。(「編集内容を登録」や「プレビュー」ボタンを押下すると真っ白い画面になる。)
「一定サイズを超えると」というあたり、バグっぽい匂いがプンプンしますね
ただ、真っ白だけでは見当をつけられないので、何らかの方法でエラーメッセージを出していただけませんでしょうか。
まずはPHPデバッグモードをONにしてから、そのエラーを再現してみてください。
サーバにエラーログとして記録されていることもあります。
Votes:1
Average:10.00
msg# 1.2
GIJOEさん はじめまして
PHPデバッグモードにすると
Notice [PHP]: Undefined property: XoopsMultiMailerLocal::$need_encode in file D:\fisinfo\xoops\language\japanese\xoopsmailerlocal.php line 197
Notice [PHP]: Undefined property: XoopsMultiMailerLocal::$mail_overload in file D:\fisinfo\xoops\language\japanese\xoopsmailerlocal.php line 208
というNoticeがでています。ちなみにここの部分をコメントアウトして、Noticeがでないようにしても状況は変わりません。
contentmanager.phpの先頭にデバッグログを追加しても表示されないので、どこで処理がとまっているかもわからない状況です。
サーバーのエラーログはapacheのerrror.logのことでしょうか?こちらには特にエラーはでていません。
他に調べたほうがよいところがあれば教えてください。
よろしくお願いします。
Votes:1
Average:10.00
msg# 1.3
現象が再現するサイズは10kbyte前後です。
サーバの構成は、PHP5,apache2.2,mysql5.0となります。
Votes:1
Average:10.00
msg# 1.2.1
う〜ん。不思議ですね。
現状で一番怪しいのは、memory_limitでしょうか。
何もメッセージがないのに真っ白、という症状ともマッチします。
条件がやや弱い気もしますが、管理者が投稿するより、一般ユーザの投稿の方が、イベント通知を行う分だけメモリを喰う、と考えれば矛盾しません。
もし、メモリーリミットをかえられるようならかえてみてください。
それでダメなら、ステップbyステップで潰していくしかないですね。
Votes:2
Average:10.00
msg# 1.4
memory_limitは128Mになっていたので、十分足りてそうですが、念のため256Mにしてみましたが、現象変わりませんでした。
とりあえずログをだして現象発生時点を確認したいと思います。
contentmanager.php
の呼び出し前にどういった処理が行われているか(どこのソースをあたればいいか)大雑把でかまいませんので、教えてもらえないでしょうか。
Votes:3
Average:3.33
msg# 1.4.1
Quote:
ishizuka wrotes:
memory_limitは128Mになっていたので、十分足りてそうですが、念のため256Mにしてみましたが、現象変わりませんでした。
確かに128Mで足りないってことは考えづらいですね。
Quote:
とりあえずログをだして現象発生時点を確認したいと思います。
contentmanager.php
の呼び出し前にどういった処理が行われているか(どこのソースをあたればいいか)大雑把でかまいませんので、教えてもらえないでしょうか。
確認なんですが、コンテンツの「更新」ですよね?
そして、その一般ユーザがコンテンツを変更する際には、承認が必要ですよね?
さらに、その変更申請まではされていない状態ですよね?
であれば、main/contentmanager.php の64行目から87行目に、適宜breakポイントを入れて、どこまで到達しているかを見てください。
memory_limit でないのに、エラーもなしに真っ白ってことは、リダイレクト処理とかがうまくいかなくて、最後のexitだけが効いている、なんて可能性はあります。
リダイレクトだけの問題でないかも確認した方が良いでしょう。
Votes:1
Average:10.00
msg# 1.5
アドバイスありがとうございます。
現象がでるのは「更新」と「プレビュー」の両方です。
プレビューでも出ているので、DBアクセスではない箇所とは思っています。
まずは到達箇所の確認をしてみます。
Votes:1
Average:10.00
msg# 1.5.1
Quote:
現象がでるのは「更新」と「プレビュー」の両方です。
プレビューでも真っ白になるんですか?
それは結構貴重な情報ですね。
であればwrapsモードにおけるリダイレクトで引っかかっている、という可能性もあります。
wrapsモードはどうなってますか?
いずれにせよ、プレビューであれば、到達地点のチェックは大分簡単のはずです。
それが判ったら教えてください。
Votes:1
Average:10.00
msg# 1.6
wrapsモードはどちらにしても同じ現象です。
到達地点ですが、htmlのindex.phpがrequireしているmainfile.phpがさらにrequireしているinclude/common.phpの最後の行の
$xoopsController->executeCommon();
の前までは到達していて、この行の処理の中で止まっているところまでわかりました。
executeCommonはLegacy_Controllerのメソッドで、ここの最後の行
$this->_processPostFilter();
で止まっているようです。
Votes:1
Average:10.00
msg# 1.6.1
Quote:
executeCommonはLegacy_Controllerのメソッドで、ここの最後の行
$this->_processPostFilter();
で止まっているようです。
ああ、それなら何らかのpreloadが原因でしょう。
xpWikiを入れてるなら、HypCommonとかありがちです。
Protectorの可能性もありますが、止まっている箇所を見る限りでは、postFilter関連でしょうね。
Votes:4
Average:5.00
msg# 1.7
ご指摘の通り、HypCommonのチェックで引っかかっていました!!
リンク集的なページだったので、サイズが増えることでリンクが増えてPOST SPAMの閾値を超えたようです。
picoとは全然関係ありませんでしたね。。お騒がせしてしまい、申し訳ありません。
大変助かりました。ありがとうございます。
Votes:2
Average:10.00