ページ 11

Fatal error: Allowed memory size of

Posted: 2013年5月14日(火) 18:47
by mojira
いつもお世話になっております。

この度、MODxのバージョンを 1.0.6J-r4 から 最新の 10.10J へバージョンアップした所、以下のエラーが出るようになりました。
Fatal error: Allowed memory size of 67108864 bytes exhausted (tried to allocate 71 bytes) in /****/*******/*******/public_html/assets/snippets/ditto/classes/phx.parser.class.inc.php on line 152
管理画面は正常に動作しますし、エラーもありません。
レポート>イベントログにも特にエラーは表示されていませんでした。

phpInfo() の memory_limitは64Mと表示されています。
php.iniのmemory_limitを増やすなどネットで調べた範囲の事はしてみたのですが、エラーが治らない為、書き込みをさせて頂きました。

何かヒントでも頂ければ幸いです。
どうぞ宜しくお願い申し上げます。

PS
私的なサイトですので、もし必要でしたらID、PASSをお知らせ致します。

-----
[サーバ]
 PHPバージョン: PHP5.3.3
 DB: MySQL5.0.95
[modx]
 バージョン:.1.0.6J-r4 から modx-1.0.10J
[クライアント]
 ブラウザ: chrome
-----

Re: Fatal error: Allowed memory size of

Posted: 2013年5月14日(火) 19:02
by yama
メモリリークを起こすような箇所ではないので変な感じですね。もしよければ見てみます

Re: Fatal error: Allowed memory size of  【解決済み】

Posted: 2013年5月16日(木) 09:59
by mojira
ありがとうございます!
yamaさんのお陰で、サイトを復旧させることが出来ました。

同じエラーで検索する人のために、メッセージでやり取りした事の成り行きを転載して終わりたいと思います。

【yamaさん】
見てみました。エラーの文言ではphx.parser.class.inc.phpの152行目で問題が起きているということになってるけど、そうではなくて、いろいろ処理をしてるところでここで力尽きたという感じです。
調べてみると、AnythingRatingというスニペットに問題があるらしいことが分かりました。
1.0.6J-r4ということはコア構造が変わる直前なので、そのへんが関係してるかもしれませんね。もう少し調べてみますが、たぶんAnythingRating自体を修正することになると思います。
【mojira】
AnythingRatingですが、もともと不具合(勝手にアクセスが増える)がありましたので、一年ほど使用していましたが、今サイトでは使用していません。
コレを消してみて、様子をみたいと思います。
色々とプラグインやスニペットを入れてしまったので、yamaさんに相談する前にその辺りを確認するべきでした。
【yamaさん】
なるほどそうなんですね。AnythingRatingのコードをじっくり眺めてみましたが、このスニペットはあまり安心して使えなさそうに感じました。
またAnythingRatingはテンプレート内でPHxを多用しますが、このPHxがいろいろな問題を引き起こします。
今回は、AnythingRatingがPHxを呼び出そうとする時点で、すでにPHxが呼び出されているかどうかをチェックして、呼び出されていたら自前のPHxは使わずに、すでに呼び出されているものを使うという処理になっています。今回のサイトでは、PHxプラグインは無効になっていますが、Ditto内の同梱PHxが呼び出されていて、AnythingRatingはそれを使っているようです。以前と状況が変わっているとしたら、Ditto同梱のPHxということになります。
このへんの問題は数年前から認識されていたのですが、本家開発チームとしてはRevoで対応することにしたという経緯があります。
AnythingRatingを使わずにすむなら、それが一番よさそうに思います。
以上です。
AnythingRatingのスニペットなどを全て削除することで現在は正常に閲覧できています。
バージョンアップでエラーが出た場合、スニペットやプラグインなどを削除して確かめる習慣をつけたいと思います。

yamaさん、ありがとうございました!