ページ 1 / 1
Error. Check event log.と表示されてしまう。
Posted: 2012年2月09日(木) 08:12
by mojira
これまで、正常にMODx管理画面からサイトの更新が出来ていたのですが、
最後にログインしてから2日後に管理画面へアクセスした所、
HTTP エラー 500(Internal Server Error): サーバーによるリクエストの実行中に、予期しない状況が発生しました。
と表示され、ログインできませんでした。
管理画面以外のページでは
Error. Check event log.
と表示されます。
管理画面にログインできないため、event logを確認することもできず、困っております。
phpmyadminからmodx_event_logのテーブルを空にしてみたら解決するのかな?っと素人考えで思いましたが、
コチラのフォーラムにて、ご意見を伺えればと考え、書き込みさせて頂きました。
エラーが出るまで、ログインなどもしておりませんので、サーバーの仕様が変更されたものかも知れませんが、
お心当たりがありましたら、ご教授頂ければ幸いです。
どうぞ宜しくお願い申し上げます。
-----
[サーバ]
PHPバージョン: PHP5.3.3
DB: MySQL5.0.77
[modx]
バージョン: modx-1.0.5J-r9
[クライアント]
ブラウザ: chrome
-----
Re: Error. Check event log.と表示されてしまう。
Posted: 2012年2月09日(木) 11:43
by yama
assets/cache/siteCache.idx.php を削除してから(あとで検証したい場合はリネームで退避)、もう一度ログインを試していただけますでしょうか。
DBでmodx_event_logテーブルを確認できるようなので、もしよければその内容を教えていただければ(直近の2~3件程度)、エラーが表示されている時に何が起きているのかを確認できます
Re: Error. Check event log.と表示されてしまう。
Posted: 2012年2月09日(木) 17:42
by mojira
yamaさん、いつもお世話になってしまい申し訳ありません。m(_ _)m
assets/cache/siteCache.idx.php を削除してから(あとで検証したい場合はリネームで退避)、もう一度ログインを試していただけますでしょうか。
siteCache.idx.phpを削除したのですが、状況に変化はありませんでした。
また念のため、空のsiteCache.idx.phpも設置して確認しましたが、駄目でした。
直近のエラーログをDBのmodx_event_logテーブルから3つほど貼り付けます。
コード: 全て選択
« MODx Parse Error »
MODx encountered the following error while attempting to parse the requested resource:
« PHP Parse Error »
PHP error debug
Error: include_once(/misc/httpd_home/XXXXXXX/web/assets/plugins/phx/phx.parser.class.inc.php): failed to open stream: No such file or directory
Error type/ Nr.: Warning - 2
File: /webdata/XXXXXXX/web/manager/includes/document.parser.class.inc.php(852) : eval()'d code
Line: 15
Basic info
REQUEST_URI: /
ID: 1
Current Plugin: phx(OnParseDocument)
Referer:
User Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/535.7 (KHTML, like Gecko) Chrome/16.0.912.77 Safari/535.7
Parser timing
MySQL: 0.0113 s (3 Requests)
PHP: 0.0258 s
Total: 0.0371 s
コード: 全て選択
« MODx Parse Error »
MODx encountered the following error while attempting to parse the requested resource:
« PHP Parse Error »
PHP error debug
Error: include_once(/misc/httpd_home/XXXXXX/web/assets/plugins/phx/phx.parser.class.inc.php): failed to open stream: No such file or directory
Error type/ Nr.: Warning - 2
File: /webdata/XXXXXX/web/manager/includes/document.parser.class.inc.php(852) : eval()'d code
Line: 15
Basic info
REQUEST_URI: /129/135.htm
ID: 135
Current Plugin: phx(OnParseDocument)
Referer: http://XXXXXX/129.htm
User Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:10.0) Gecko/20100101 Firefox/10.0
Parser timing
MySQL: 0.0054 s (4 Requests)
PHP: 0.0186 s
Total: 0.0240 s
コード: 全て選択
« MODx Parse Error »
MODx encountered the following error while attempting to parse the requested resource:
« PHP Parse Error »
PHP error debug
Error: include_once(/misc/httpd_home/XXXXXX/web/assets/plugins/phx/phx.parser.class.inc.php): failed to open stream: No such file or directory
Error type/ Nr.: Warning - 2
File: /webdata/XXXXXX/web/manager/includes/document.parser.class.inc.php(852) : eval()'d code
Line: 15
Basic info
REQUEST_URI: /index.html
ID: 268
Current Plugin: phx(OnParseDocument)
Referer:
User Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.6; rv:10.0) Gecko/20100101 Firefox/10.0
Parser timing
MySQL: 0.0058 s (5 Requests)
PHP: 0.0140 s
Total: 0.0198 s
以上です。
phx.parser.class.inc.phpが壊れているのかな?と考え、上書きしたのですが、状況は変わりませんでした。
エラーログは全部で250個ほどあり、全て
コード: 全て選択
include_once(/misc/httpd_home/XXXXXX/web/assets/plugins/phx/phx.parser.class.inc.php): failed to open stream: No such file or directory
に関連しているようです。
また、エラーログが吐き出された日にちは、サーバーに繋がらなくなった時期と重なります。
この状況で何か、推測できることがありましたら、ご教授頂ければ助かります。
昨日より、サーバー管理者にも連絡をとっていますので、そちらから回答が来れば、またご報告いたします。
どうぞ宜しくお願い申し上げます。
Re: Error. Check event log.と表示されてしまう。
Posted: 2012年2月09日(木) 18:18
by yama
不思議なエラーですね。管理画面にアクセスしようとするだけでInternal Server Errorというのは、いろんな可能性が考えられそうですが、MODX特有の問題は今のところ思いつきません。phxもそれ自体は関係ないと思います。
/misc/httpd_home/XXXXXXX/web/
/webdata/XXXXXX/web/
絶対パスの読み取りが上記の2種類あるのも気になります。後者が合ってるみたいですが。
Internal Server Errorということなので、サーバ管理者さんからの情報が参考になりそうです。どのファイルを読み込む時にどういうエラーが起きているかを教えていただけると思いますので、また連絡いただければと思います。
Re: Error. Check event log.と表示されてしまう。
Posted: 2012年2月09日(木) 18:24
by mojira
yamaさん、ありがとうございます。
MODX特有の問題は今のところ思いつきません。
了解いたしました。
コチラとしても、これまで問題もなく正常に運用できていたので、サーバー絡みではないかと疑っております。
進展があり次第、また追記させて頂きます。m(_ _)m
Re: Error. Check event log.と表示されてしまう。
Posted: 2012年2月09日(木) 18:30
by yama
すいません、ひとつ思いつきました。phxのコードを見て気付いたのですが
siteCache.idx.phpをテキストエディタで開いて、
/misc/httpd_home/XXXXXXX/web/
上記を
/webdata/XXXXXX/web/
これに置換していただけますか。(管理画面とは関係ないはずですが)
たぶん2ヶ所あると思います
Re: Error. Check event log.と表示されてしまう。
Posted: 2012年2月09日(木) 23:30
by mojira
yamaさん、ありがとうございます!
siteCache.idx.phpをテキストエディタで開いて、
/misc/httpd_home/XXXXXXX/web/
上記を
/webdata/XXXXXX/web/
これに置換していただけますか。(管理画面とは関係ないはずですが)
たぶん2ヶ所あると思います
コチラの方法で、サイトが正常に表示されました!
ただ、管理画面ではグローバル設定やリソース編集などの保存などを行うと、必ず下記のメッセージが表示されます。※キャプチャ
Cannot write main MODX cache file! Make sure the assets/cache directory is writable!
ただ、エラーは表示されますが保存はできます。
assets/cache フォルダの属性は707となっております。
/misc/httpd_home/XXXXXXX/web/
/webdata/XXXXXX/web/
絶対パスの読み取りが上記の2種類あるのも気になります。後者が合ってるみたいですが。
この様な事が起こる原因というのは、やはりサーバーでなんらかの変更があったからでしょうか。
サーバー由来なら、このまま運用するのはリスクが高いのでサーバーを変更するようにクライアントに提案しようと考えております。
エラーは出ますが、とりあえず編集できるようになりました。
本当に助かりました。 ありがとうございます。
サーバー管理者からは、まだ連絡が来ないのですが、引き続き進展があれば、ご報告いたします。
Re: Error. Check event log.と表示されてしまう。
Posted: 2012年2月09日(木) 23:43
by yama
貴重な報告ありがとうございます。今回の話は開発上かなり参考になりそうです。
まず、先ほどお伝えした修正に関しては、
・グローバル設定の「管理画面の設定」の「ファイルブラウザディレクトリの物理パス」
・グローバル設定の「ファイル管理の設定」の「ファイル管理機能の管理対象ディレクトリ」
が相当します。2ヶ所あるというのは、この部分です。見ていただくと、表示されている既定値と実際の設定値が異なっていると思います。その設定値のままグローバル設定を更新すると、siteCache.idx.phpが元のイレギュラーな状態に戻ってしまいます。
問題は、本来はここは基本的なシステム制御には関係しない部分であるはずという点です。適当な文字列を入力していても管理画面を開くことはできることになってます。
グローバル設定の該当個所にリセットボタンがあるので、ここをクリックすれば正しい設定になると思います。
とりあえずそれで解決すれば本件はよいのではと思います。あとはこちらの開発上の都合で、いろいろ考えたいと思います。もしリセットボタンで解決すれば、また連絡いただければと思います。
Re: Error. Check event log.と表示されてしまう。
Posted: 2012年2月10日(金) 01:05
by mojira
yamaさん、お疲れさまです。
貴重な報告ありがとうございます。今回の話は開発上かなり参考になりそうです。
質問攻めで、yamaさんの時間を奪うのは気が引けていたので、そう言って頂けると嬉しいです。
・グローバル設定の「管理画面の設定」の「ファイルブラウザディレクトリの物理パス」
・グローバル設定の「ファイル管理の設定」の「ファイル管理機能の管理対象ディレクトリ」
グローバル設定より、上記の設定をしましたが、やはり
Cannot write main MODX cache file! Make sure the assets/cache directory is writable!
というエラーは続きます。
またリソースの編集では、tinyMCEから、画像やファイルのアップができなくなっておりました。
Error,"Failed to upload, internal error..."
というエラーがファイルブラウザに表示されてしまいます。
エレメント→ファイル管理の内容がどうも更新されていないようでした。※添付ファイル
また、ログイン直後のダッシュボードの画面には、正常なら
MODx最新情報、セキュリティ情報、最近のリリース、情報などのタブと共に、各種アイコンが表示されていますが※添付ファイル
この部分には、なにも表示されていません。
ファイル管理機能の管理対象ディレクトリの規定値が
/misc/httpd_home/ogoridai/web/
グローバル設定で設定した以下の値
/webdata/XXXXXX/web/
と違うのが原因のような気もします。
ファイル管理機能の管理対象ディレクトリの規定値を直接変える方法などを探してみたいと思います。
Re: Error. Check event log.と表示されてしまう。
Posted: 2012年2月10日(金) 01:49
by yama
なるほどー。そこは、、分かる人にしか分からない話ですみませんが、MODX_BASE_PATHの取得に失敗していて、ここは今までのMODXの設定云々ではどうにもなりません。
以下は、PHPコードが分かる人に対しての提示ですが
コード: 全て選択
if(empty($base_path)||empty($base_url)||$_REQUEST['base_path']||$_REQUEST['base_url']) {
$sapi= 'undefined';
if (!strstr($_SERVER['PHP_SELF'], $_SERVER['SCRIPT_NAME']) && ($sapi= @ php_sapi_name()) == 'cgi') {
$script_name= $_SERVER['PHP_SELF'];
} else {
$script_name= $_SERVER['SCRIPT_NAME'];
}
$a= explode("/manager", str_replace("\\", "/", dirname($script_name)));
if (count($a) > 1)
array_pop($a);
$url= implode("manager", $a);
reset($a);
$a= explode("manager", str_replace("\\", "/", dirname(__FILE__)));
if (count($a) > 1)
array_pop($a);
$pth= implode("manager", $a);
unset ($a);
$base_url= $url . (substr($url, -1) != "/" ? "/" : "");
$base_path= $pth . (substr($pth, -1) != "/" && substr($pth, -1) != "\\" ? "/" : "");
}
ちょっと変じゃないか?と思います。config.inc.phpの中で dirname(__FILE__)の値を取得すれば、explodeやimplodeなどを使わず、今のevoの構造ならMODX_BASE_PATH($base_path)のパスはもっとシンプルに取得できるはずです。とにかく、config.inc.phpが存在するmanagerディレクトリのある場所がMODX_BASE_PATHなので、それを判定するのにexplodeやimplodeを組み合わせるような複雑なロジックは不要です。
明日リリースを予定していた1.0.5J-r11ではここを根本的に改善しています。(今回とは関係ないかもしれませんが)
かといって、開発中の1.0.5J-r11にアップデートというのも億劫かと思います。デバッグコードを作りますので、しばらくお待ちいただければと思います。
ポイントは絞れてますので、解決の方向に向かうと思います
ここが関係していると分かれば安心して1.0.5J-r11を出せるので、もしよければご協力いただけると助かります。とりあえずデバッグコード書きますので、しばらくお待ちいただければと
phxのコードが参考になった件は、また改めて説明します。phxにも、バグというほどではないですが問題はありました。今回の件とは直接の関係ないですが
Re: Error. Check event log.と表示されてしまう。 【解決済み】
Posted: 2012年2月10日(金) 02:20
by mojira
yamaさんへ お世話になっております。
開発中の1.0.5J-r11にアップデートというのも億劫かと思います。
全然億劫じゃないです。 バックアップを取り、アップデートしてみたいと思います。
ただ、サーバーに何らかの変更があって発生した不具合の場合、また同じことが起こることもありそうなので、
サーバー管理者と連絡をとってからが良いような気がしています。
サーバー管理者には昨日メールをお送りしていますが、連絡がまだ来ませんので、明日まで待って返信がない場合は直接電話をかけてみたいと思います。
もしよければご協力いただけると助かります。とりあえずデバッグコード書きますので、しばらくお待ちいただければと
勿論です。協力をさせてください!m(_ _)m
また質問で恐縮ですが・・・ご提示頂いたPHPコードは、申し訳ありませんが、デザイナー崩れの自分には、理解が難しいのですが、
このコードをconfig.inc.phpに入れ込めば良いのでしょうか。※トンチンカンなことを聞いている可能性が高いですが・・
Re: Error. Check event log.と表示されてしまう。
Posted: 2012年2月10日(金) 11:44
by yama
デバッグコードというほどのものでもないですが、調査用のファイルを作りました。index.phpが2つありますので、それぞれ上書きしていただけますでしょうか。出力された値の記録をとって、また元のindex.phpに戻してください。
出力された値を教えていただけますでしょうか。この値が正しければ、また違う場所に原因があるということになりますが・・
Re: Error. Check event log.と表示されてしまう。
Posted: 2012年2月10日(金) 12:51
by mojira
yamaさん、デバッグファイルありがとうございます。m(_ _)m
表示された値は、
コード: 全て選択
MODX_BASE_PATH=/webdata/XXXXXXXX/web/
MODX_BASE_URL=/
MODX_SITE_URL=http://www3.XXXXXXXX.jp/
MODX_MANAGER_PATH=/webdata/XXXXXXXX/web/manager/
MODX_MANAGER_URL=http://www3.XXXXXXXX.jp/manager/
となっておりました。
また、サーバー管理者と直接話すことができました。
設定などは一切変えていないとのお話でしたが、絶対パスについては
シンボリックリンクと実態リンクがあるような事を話しておりました。サーバーには詳しくないのですが、そんな単語だったと思います。
担当者曰くMODxが自動で実態リンクを読みにいっている(その逆かも)のが原因じゃないかとのお話でした。
現在は、絶体パスを一つに変えて頂いたのですが、相変わらす保存時には
Cannot write main MODX cache file! Make sure the assets/cache directory is writable!
と表示されてしまいます。
TinyMCEに関しては、ファイルがアップできるようになっておりました。
意味がないかも知れませんが、managerフォルダ以下を一度全て上書きとかしてみたいと思います。
また進捗があれば、ご報告いたします。
Re: Error. Check event log.と表示されてしまう。
Posted: 2012年2月10日(金) 13:02
by yama
キャッシュの更新ができないのが気になりますね。添付のファイルを/manager/processors/ディレクトリに上書きして、同じメッセージを確認していただけますでしょうか。今度は実際に書き込もうとしたパスが表示されます。
Re: Error. Check event log.と表示されてしまう。
Posted: 2012年2月10日(金) 13:24
by mojira
お疲れさまです。m(_ _)m
コード: 全て選択
Cannot write main MODX cache file! Make sure the "/webdata/ogoridai/web/assets/cache/" directory is writable!
リソース保存時のエラー、但しファイルは保存されてます。 キャッシュが生成されていないです。
コード: 全て選択
Cannot write main MODX cache file! Make sure the "../assets/cache/" directory is writable!
グローバル設定保存のエラー、但しファイルは保存されてます。
保存時に上記のようなエラーが出ました。
サーバー管理者からは、「apacheの実行ユーザはnobodyですので、cacheディレクトリには書き込み可能だとおもいます。」とのことです。
進捗があれば、またお知らせいたします。
Re: Error. Check event log.と表示されてしまう。
Posted: 2012年2月10日(金) 14:14
by yama
ちょっと謎なエラーですが、ポイントは絞れてきた気がします。siteCache.idx.phpは生成されていないか、生成されていてもサイズゼロという感じでしょうか?
リソースを更新する場合は基本的にsiteCache.idx.phpは更新されませんが、エイリアスを変更した場合はsiteCache.idx.phpも更新します。
http://forum.modx.jp/viewtopic.php?f=34 ... 4072#p4072
もしよければ開発版のベータにアップデートしていただけますでしょうか?こちらのほうが精密な処理を行ないますし、もし問題が解決されてなくても処理を追いやすいです
Re: Error. Check event log.と表示されてしまう。
Posted: 2012年2月10日(金) 14:17
by yama
MODX_BASE_PATH=/webdata/XXXXXXXX/web/
MODX_BASE_URL=/
MODX_SITE_URL=
http://www3.XXXXXXXX.jp/
MODX_MANAGER_PATH=/webdata/XXXXXXXX/web/manager/
MODX_MANAGER_URL=
http://www3.XXXXXXXX.jp/manager/
これは問題ないですねー。うーん?
Re: Error. Check event log.と表示されてしまう。
Posted: 2012年2月10日(金) 20:40
by mojira
yamaさん、お世話になります。
siteCache.idx.phpは生成されていないか、生成されていてもサイズゼロという感じでしょうか?
先日yamaさんのアドバイスで以下の絶対パスで二箇所を書き換えてアップ状態(アップした日付)でそのまま残っています。
コード: 全て選択
/webdata/XXXXXXX/web/assets/
siteCache.idx.phpをお送りした方が分かりやすいでしょうか。
後で、yamaさん宛にお送りいたします。
もしよければ開発版のベータにアップデートしていただけますでしょうか?こちらのほうが精密な処理を行ないますし、もし問題が解決されてなくても処理を追いやすいです
了解いたしました。
アップデートしてみたいと思います。
完了後、またご報告させてください。
ありがとうございました。
Re: Error. Check event log.と表示されてしまう。
Posted: 2012年2月12日(日) 22:15
by mojira
yamaさんと二人三脚(私はオロオロしてただけなんですが・・)で修正することができました。
この場を借りて、修正ファイルやデバッグファイルまで作成頂いたyamaさんに御礼申し上げます。m(_ _)m
●原因はなんだったのか?
運用サーバーにて、シンボリックリンクと実体リンクで絶対パスが2つあることが、今回の不具合の原因でした。
yamaさんとのやり取りより引用させて頂くと。
$_SERVER['DOCUMENT_ROOT'] という変数がありまして、ここに入っている値が「/home/XXXXXX/web」でした。
/home/XXXXXX/web - シンボリックリンク
/webdata/XXXXXX/web - 実体リンク
ってことですよね。この値が違うことで何が起きるかというと、たとえばconfig.inc.phpが格納されているディレクトリが
/webdata/XXXXXX/web/manager/includes
であったとすると、ここから「manager/includes」という文字を引き算すれば、MODXが稼働しているディレクトリが分かりますよね。そこまでは問題ないですが。
今回は、というか、ほとんどの案件がサイトのルート「/」でMODXを運用すると思いますが、サブディレクトリ(/sub/など)で運用することもあると思います。
このディレクトリを求める部分でバグが発生する可能性があって、今回はそれでした。
/webdata/XXXXXX/web/manager/includes
ここからmanager/includesを引いて、その次に
/webdata/XXXXXX/web/
ここの「/webdata/XXXXXX/web」を求めるために、MODXでは$_SERVER['DOCUMENT_ROOT']を参照してました。
引き算すれば「/」だけが残るはずなんですが、思っていたのと違う値が入っていたためバグになりました。
新しいバージョンでは、このようなサーバーの設定にも対応してリリースするとの事でした。
●どうしたら解決したのか。
1_最新版のMODx(1.0.5J-r11b7)へのバージョンアップ
2_yamaさんから頂いた,initialize.inc.phpをmanager/includesへ上書き。
上記の作業にて問題なく動作することを確認いたしました。
バージョンアップで今回のような特徴のあるサーバーへの対応が進んでおり、タイミング的にも助かりました。
機能追加だけでなく、この様な見えない所なども着実に改善されている事に頭が下がります。
より信頼できるCMSとして今後も使用させて頂きたいと思います。