LOGIN ID Password Auto Login Register Now! Lost Password?
Xoops Q&A

管理画面が崩れる(XCL2.1.4->2.1.5アップデート後;一部ユーザ)

  • ログインせずに、この質問カテゴリに投稿できません
  • Xoops Q&A ではゲスト投稿が禁止されています。登録はこちらからどうぞ
  • このトピックは管理者もしくはモデレータによりロックされています
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 .2 .3 .4 .5 .6 | 投稿日時 2008-8-14 15:40
sacchan  1st Class 登録日: 2007-11-14   投稿数: 40
いつもお世話になっております。
XOOPS Cube Legacy2.1.5安定版が公開されましたので、これまで運用していたサーバをアップデートしました。(XCL2.1.4->2.1.5)

が、実はこのアップデートにもちょっと苦労して・・・
2.1.4から2.1.5への差分パッケージを利用してアップデートしたのですが、(ローカルで解凍したパッケージファイルを)FTPでアップロード→モジュールの管理でアップデートしようとしただけなのに画面真っ白
何度かチャレンジしてやっとアップデートに成功したのです。

#すみません、余談(?!)でした

管理者権限のある自分のアカウントで表示・動作の確認をした時は何も問題はなかったのですが、、、
一部のユーザ(グループ)に、いくつかのモジュールの管理権限を出しています。
具体的に例を挙げると、smartfaq, weblinks, bulletinHD など。
で、今朝 このグループのユーザ権限でログインしてみたところ、「管理画面」の表示が崩れていることに気づきました。

管理画面を使った操作のあるページと言うのでしょうか、、、
例えば、bulletinHDのニュース投稿は、管理画面からの操作ではないので 問題なく表示されます。
が、weblinksで新規にリンクを登録しようとすると、管理画面に操作が移るので うまく表示されません(表示が崩れます)
#繰り返しになりますが、管理者権限を持つアカウントではこのような表示にはならず、(どちらも)問題なく表示されます。

表示が崩れるというのは、具体的に言うと(言葉で表現するのは難しいですが)、文字とリンクのみ(ただし、XOOPS Cube Administrationのロゴだけは表示される)で構成されています。

実は、smartfaqで回答を更新しようとしていてこの問題に気づきました。
smartfaqについては、多少カスタマイズして利用しているため そのカスタマイズの影響で不具合が発生しているのでは?!と思ったのですが、他の(管理権限を与えている)モジュールについても同様でした。

色々情報を探したりしたのですが、なかなかうまく見つけることができず、(いつもお世話になっている)こちらで質問させていただきました。
何かアドバイスなどいただけると嬉しく思います。
どうぞよろしくお願いいたします。

当方のサイトの環境はPHP5, MySQL5で、これまでXOOPS Cube Legacy2.1.4で問題なく利用(上述の一部ユーザの権限でも)できていました。
投票数:1 平均点:10.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 .2 | 投稿日時 2008-8-15 8:45
minahito  Lieutenant 登録日: 2006-3-20   投稿数: 394
おはようございます。(^^)

XCL 2.1.4 では正常に動作していて、 XCL 2.1.5 では見栄えが異常になったとなれば、当然 BASE Package 側のエンバグが疑われるところでございます……(;-_-)

スタイルシートが適用されていないっぽい感じですね……
まだ分かりませんが、 URL 解析周りに手が入ったので、そのへんで各プログラムの動作認識上の問題が起きているのかもしれません。帰省先から戻ったら動作チェックしてみます。

後日アップデートがきちんと行われているのかどうかの確認だけお願いするかもしれません。

あと念のため環境を教えて下さい。
PHP CGI 版とか、そうでないとか、あと問題の起きているモジュールのバージョンとか箇条書きでもいいので示していただけると助かります。
投票数:1 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2008-8-15 12:05
sacchan  1st Class 登録日: 2007-11-14   投稿数: 40
minahitoさん、こんにちは。
レスいただきありがとうございます。

引用:
スタイルシートが適用されていないっぽい感じですね……

はい。まさにそんな感じです。

今回のこの「管理画面の崩れ」に気づいたのは、smartfaqで回答を更新しようとしていて、、、と書きましたが、画面は崩れますが、動作(=更新)は正常に動いているようです。
#更新できました!

引用:
PHP CGI 版とか、そうでないとか、あと問題の起きているモジュールのバージョンとか箇条書きでもいいので示していただけると助かります。

PHPについては、私自身初心者でこの辺りのことがまったく分かっていなくって (すみません!)
「Fedora Core 6に標準で準備されているPHPパッケージ」ということしか分からないのですが、、、これで何とかご理解いただけますか?!

#ちなみに(?)Apacheも上述の標準、MySQLは5.0.27です。

(気づいた限りの)問題の起きているモジュールとそのバージョンは、以下です。

bulletinHD 2.14
weblinks 1.90
myAlbum-P 2.88
smartfaq 1.08
pico 1.61
#どれも「管理画面を利用する」機能(Ex. bulletinHDで言えば ニュース投稿はOK ニュース記事の管理はNG)のみ画面が崩れます

他にも何か必要な情報などありましたら ご指摘ください。
どうぞよろしくお願いいたします(_O_)
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2008-8-15 13:21
okuhiki  1st Class 登録日: 2006-7-18   投稿数: 60
2.1.5 以前からと思いますが、モジュール legacyRender のアクセス権のみでは、管理メニューの css の取得時に権限が無い旨のメッセージが送信され適切な css の取得はできませんね。
該当ユーザ(グループ)にモジュール legacyRender の管理権も与えれば css の取得が可能ですから、権限チェックが不適切にキビシイーかも知れませんね。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 .2 | 投稿日時 2008-8-15 13:55
sacchan  1st Class 登録日: 2007-11-14   投稿数: 40
okuhikiさん こんにちは。
レスをいただきありがとうございます。

引用:
2.1.5 以前からと思いますが、モジュール legacyRender のアクセス権のみでは、管理メニューの css の取得時に権限が無い旨のメッセージが送信され適切な css の取得はできませんね。
該当ユーザ(グループ)にモジュール legacyRender の管理権も与えれば css の取得が可能ですから、権限チェックが不適切にキビシイーかも知れませんね。

当方のサイトで、アクセス権をどのようにしているのか(legacyRender)確認してみました。
(なんと?!)該当ユーザ(グループ)には、legacyRender(というかXOOPS2->XCL移行時に追加(?)されたモジュール全て)アクセス権すら与えていない状況でした(!)

これはやはり、少なくとも(最低でも?!)アクセス権は出すべきなのでしょうか。
このユーザ(グループ)には、基本的なサイト管理というより、ニュース投稿、FAQ掲載更新、文書掲載更新、予定掲載といったコンテンツ面の維持管理を実施してもらっています。

#この状態で確かにこれまで(XCL2.1.4)特に問題なく利用できていたのですが、、、
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2008-8-15 14:55
okuhiki  1st Class 登録日: 2006-7-18   投稿数: 60
引用:
少なくとも(最低でも?!)アクセス権は出すべきなのでしょうか。
アクセス権がなくても管理は正常に行えると感じます。

私の感覚としては、アクセス権があれば css.php にアクセス時に適切な css が送信されると期待して与えているのですが、現状では不可のようですね。

暫定的にサイトの管理者でログイン時の css をどこかにアップし、追加のスタイルシートとして管理メニューのテーマファイルに直書きして対応を待つ方法が考えられますね。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2008-8-15 14:57
mbxoops  1st Class 登録日: 2008-6-25   投稿数: 36
ほとんど同じような現象が発生しています。
HD101b(XCL2.1.4)->HD102RC(XCL2.1.5)にしてからです。
ただ私の場合は表示が崩れるのはIE6を利用している場合のみです。
管理者でログインしています。

自宅ではIE7を利用していて特に問題はなかったのですが、このところ出先のPC(IE6)で管理画面を表示するとおかしくなることに気がつきました。

現象は同じでも発生条件が違うのかな?
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2008-8-15 15:41
sacchan  1st Class 登録日: 2007-11-14   投稿数: 40
mbxoopsさん こんにちは。

引用:
ほとんど同じような現象が発生しています。
HD101b(XCL2.1.4)->HD102RC(XCL2.1.5)にしてからです。
ただ私の場合は表示が崩れるのはIE6を利用している場合のみです。
管理者でログインしています。

自宅ではIE7を利用していて特に問題はなかったのですが、このところ出先のPC(IE6)で管理画面を表示するとおかしくなることに気がつきました。

現象は同じでも発生条件が違うのかな?

発生条件は私のものとは違うようですね。

私の環境は、IE7、Firefox 2.0.0.16の両方で発生します。
#普段この2つのブラウザで表示、動作などの確認を行っています。

どちらも管理者でログインした場合には問題はありません(普通にCSSが適用された(?)管理画面となります)
一部のユーザ(グループ)でログインした場合に、管理画面が崩れて(CSSが適用されない?!)しまいます。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2008-8-15 15:57
sacchan  1st Class 登録日: 2007-11-14   投稿数: 40
okuhikiさん アドバイスをいただきありがとうございます。

引用:
アクセス権がなくても管理は正常に行えると感じます。

そうですか。では、一応現状のまま一部ユーザ(グループ)にはアクセス権、管理権限はナシで、、、としておきます
#legacyRender他 XCLで追加されたモジュール

引用:
暫定的にサイトの管理者でログイン時の css をどこかにアップし、追加のスタイルシートとして管理メニューのテーマファイルに直書きして対応を待つ方法が考えられますね。

なるほど。。。
とは言え、すぐに「解(=実際の作業手順)」が分かったわけではないです。何となく「こうかな?!」というレベル
#すみません 修行中の身です

ちょっとやってみます!
ありがとうございます。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2008-8-15 18:00
takahasi  1st Class 登録日: 2007-7-23   投稿数: 39
こちらでも2.14からのアップデートで同じ不具合が起きているので報告します。
[互換レンダーシステム]の管理者権限を与えると表示は正常になりますが、2.14までは管理者権限がなくても、正常に表示されていました。

動作環境
SERVER Apache
PHP 5.2.4
MySQL 5.0.27-standard-log
XOOPS XOOPS Cube Legacy 2.1.5

閲覧環境
Linux版Firefox3
Windows版Firefox2
Windows版IE6

なお、Altsysの「管理画面用テーマ」を適用した場合は[互換レンダーシステム]に関係なく正常に表示されます。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2008-8-15 20:52 | 最終変更
okuhiki  1st Class 登録日: 2006-7-18   投稿数: 60
抽象的すぎましたね。以下におおざっぱですが手順を書いて試ます。
サイトの管理者でログインした時の管理メニュー(正常に表示されている状態)の xhtml ソースに下記に類似の記述が有ると思います。
<link rel="stylesheet" type="text/css" media="all" href="http://localhost/xcl215/modules/legacyRender/admin/css.php?file=style.css" />
href 属性値のアドレスにアクセスを行い、該当の css を取得し、適当な名前を付けて保存します。
保存した css をサーバにアップロードし、そのファイルが読み込まれるように管理メニューのテーマファイルにリンクを作成します。
例えば(alternate.css として themes の admin フォルダにアップ)、以下のような記述です。
<link rel="stylesheet" type="text/css" media="all" href="http://localhost/xcl215/templates/admin/alternate.css" />
<link rel="stylesheet" type="text/css" media="all" href="http://localhost/xcl215/themes/admin/alternate.css" />

<link rel="stylesheet" type="text/css" media="all" href="http://localhost/xcl215/modules/legacyRender/admin/css.php?file=module.css&amp;dirname=legacy" />
モジュール別の css も必要と有れば、同様の手順で行なえると思いますが、かち合って表示が乱れる場合も有るので、いくらかの乱れなどは、しばらく我慢して頂いた方が良いかも知れませんね。
----- 一部修正 ----- 15日22時06分
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2008-8-16 14:22
GIJOE  Admiral 登録日: 2006-3-20   投稿数: 3708
状況確認しました。

#1950018 による影響ですね。
nocommon=1 だったのを外したおかげで、通常の権限確認が発生してしまった、と。

しかしこれ、なんとも難しいところです。
http://www.xugj.org/modules/QandA/index.php?topic_id=728
という問題があったからこそ、nocommon=1を外したわけで、それを戻したら元の黙阿弥となってしまいます。

かといって、
「いずれかのモジュールに管理者権限を与えるなら、legacyRenderへの管理者権限も与えること」
なんて判りづらいルールを後から追加するのはあまり望ましくありません。

「言語マネージャなどは一通り通過して欲しいけど、権限チェックだけはスキップしたい」
という処理ができるように、legacy側に手を入れるしかないんじゃないかという気がします。
投票数:1 平均点:10.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2008-8-19 7:33
minahito  Lieutenant 登録日: 2006-3-20   投稿数: 394
なんか原因が解明してる!
……おそるべし

引用:

GIJOEさんは書きました:
nocommon=1 だったのを外したおかげで、通常の権限確認が発生してしまった、と。

なぁるほどぉ……

引用:
しかしこれ、なんとも難しいところです。

(snip)

という処理ができるように、legacy側に手を入れるしかないんじゃないかという気がします。

そうですね。legacyにそういうAPIを作って、モード切り替えにするか、

enum LEGACY_SEQUENCE_MODE
{
  SEQ_NORMAL,
  SEQ_SKIP_CHECKAUTH
};

$root->mController->setSequenceMode(SEQ_SKIP_CHECKAUTH);

権限チェックにデリゲートを追加して、デリゲートが登録されていれば既存の権限チェックは行わずにデリゲートに処理を委譲するというコールバックスタイルを取るか……

後者のほうが可汎性はあがりますが、可汎性を求める場面か!?と言われると違うような気がしますし、

引用:
「いずれかのモジュールに管理者権限を与えるなら、legacyRenderへの管理者権限も与えること」

これもできなくもないという点ではデリゲートに利点もあるし、悩みどころですね。(^^)
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 .2 .3 | 投稿日時 2008-8-19 10:04
Marijuana  Warrant Officer 登録日: 2006-10-30   投稿数: 179
引用:
「言語マネージャなどは一通り通過して欲しいけど、権限チェックだけはスキップしたい」
という処理ができるように、legacy側に手を入れるしかないんじゃないかという気がします。
legacyRenderそのものへの管理権限は互換レンダーシステムの管理画面にアクセス出来てしまうので、css.phpのみ許可しないとダメじゃないかと思うのでcss.phpの時だけ権限チェックをスキップするパッチ書いてみました。
--- Legacy_AdminControllerStrategy.class.1.3.php	Sun Jun 24 23:58:52 2007
+++ modules/legacy/kernel/Legacy_AdminControllerStrategy.class.php	Tue Aug 19 09:50:51 2008
@@ -157,6 +157,8 @@
 			
 			if ($dirname == 'legacy') {
 				return $principal->isInRole('Site.Administrator');
+			} elseif ( $dirname == 'legacyRender' && substr($_SERVER['SCRIPT_NAME'], -7) == 'css.php' ) {
+				return true;
 			}
 			
 			return $principal->isInRole("Module.${dirname}.Admin");

これの手前にif (!$principal->mIdentity->isAuthenticated()) {があるのでゲストはアクセス出来ないのでちょうどいいんじゃないかなぁと

#いつものごとく動作確認は殆どしてませんが。。。(苦笑)
投票数:1 平均点:10.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2008-8-19 11:55
sacchan  1st Class 登録日: 2007-11-14   投稿数: 40
okuhikiさん こんにちは。
具体的に手順を書いていただき、本当にありがとうございます。
#反応が遅くて申し訳ありません(_O_)

引用:
サイトの管理者でログインした時の管理メニュー(正常に表示されている状態)の xhtml ソースに下記に類似の記述が有ると思います。

href 属性値のアドレスにアクセスを行い、該当の css を取得し、適当な名前を付けて保存します。

はい、ここまではできました!

引用:
保存した css をサーバにアップロードし、そのファイルが読み込まれるように管理メニューのテーマファイルにリンクを作成します。

そして、実はここで引っかかっています。
これまで管理メニュー(管理画面)のテーマファイルを意識したことがなく(つまり、デフォルトの設定(?)そのまま)
この「管理メニューのテーマファイル」が理解できないというレベルの私です。

検索して 管理画面>ALTSYS>一般設定 の「管理画面用テーマ」が関連している(ここでテーマファイルを設定している?!)ようだというのは分かって、、、
ここには現在 default が入っています。
でもこの default がどこにあるのか が分からない私です。
#あぁ本当にレベルが低くてすみません!

一応思いつく限りで(<的外れだとは思いつつも)
themes/default/theme.html
にリンクを記述してみましたが(やっぱり ^^;)ダメでした。

ここで止まってしまっています。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2008-8-19 12:08
sacchan  1st Class 登録日: 2007-11-14   投稿数: 40
GIJOEさん、minahitoさん、Marijuanaさん こんにちは。

色々な動作・表示確認など済んでいない状況ですが、、、
まずは報告します!

引用:
legacyRenderそのものへの管理権限は互換レンダーシステムの管理画面にアクセス出来てしまうので、css.phpのみ許可しないとダメじゃないかと思うのでcss.phpの時だけ権限チェックをスキップするパッチ書いてみました。

先ほどまでは、legacyRenderへの管理権限を出すことで表示の崩れに対処していました。
#が、該当グループメンバには不要な(?というか触って欲しくない)メニューが管理画面に出てしまうので どうしたものか?!と思っていたところです。

そして、先ほどMarijuanaさんの出してくださった

--- Legacy_AdminControllerStrategy.class.1.3.php	Sun Jun 24 23:58:52 2007
+++ modules/legacy/kernel/Legacy_AdminControllerStrategy.class.php	Tue Aug 19 09:50:51 2008
@@ -157,6 +157,8 @@
 			
 			if ($dirname == 'legacy') {
 				return $principal->isInRole('Site.Administrator');
+			} elseif ( $dirname == 'legacyRender' && substr($_SERVER['SCRIPT_NAME'], -7) == 'css.php' ) {
+				return true;
 			}
 			
 			return $principal->isInRole("Module.${dirname}.Admin");

のパッチを当ててみたところ、該当グループのメンバ権限でログインした状態で、「管理画面の崩れが解決している」ことを確認しました。

取り急ぎご報告です(_O_)
どうもありがとうございました!
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2008-8-19 17:52
okuhiki  1st Class 登録日: 2006-7-18   投稿数: 60
パッチを適用して試ました。良好に css を読み込む事が可能になりました。ありがとうございます。

冗長なチェックですが
return $principal->isInRole("Module.${dirname}.Visitor");
とするとアクセス権の有無で振り分け可能になるかな。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2008-8-19 19:08
Marijuana  Warrant Officer 登録日: 2006-10-30   投稿数: 179
sacchanさん、okuhikiさん
試していただきありがとうございます。

引用:

okuhikiさんは書きました:
冗長なチェックですが
return $principal->isInRole("Module.${dirname}.Visitor");
とするとアクセス権の有無で振り分け可能になるかな。
それだとlegacyRenderのアクセス権が必要になってしまうはずなので、やるなら
return $this->mController->mRoot->mContext->mXoopsUser->isAdmin(0);
かなぁ

んでついでに
$root=&XCube_Root::getSingleton();
$root->mController->executeCommonSubset(false);
この2行は$xoopsOption['nocommon']=1;時に必要なはずなので不要かと
Notice [PHP]: Constant XOOPS_LEGACY_PATH already defined in file のエラーが出てしまってます。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 .2 | 投稿日時 2008-8-20 5:58
GIJOE  Admiral 登録日: 2006-3-20   投稿数: 3708
一点突っ込みです。

引用:

+ } elseif ( $dirname == 'legacyRender' && substr($_SERVER['SCRIPT_NAME'], -7) == 'css.php' ) {
SCRIPT_NAME はCGI版などで、'/cgi-bin/php' になったりします。
REQUEST_URI を分解するのが一番堅いと思います。
(REQUEST_URIであれば、CGI版もApacheモジュール版も同じ値になる)
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 .2 | 投稿日時 2008-8-20 23:46
Marijuana  Warrant Officer 登録日: 2006-10-30   投稿数: 179
okuhikiさん
アクセス権の有無でって書いてますね^^;
return true;
return $principal->isInRole("Module.${dirname}.Visitor");
return $this->mController->mRoot->mContext->mXoopsUser->isAdmin(0);
どれにするかはminahito氏の好みで(笑)

GIJOEさん
突っ込みどもです。

改めて
diff -u -r1.3 Legacy_AdminControllerStrategy.class.php
--- Legacy_AdminControllerStrategy.class.php   24 Jun 2007 14:58:52 -0000   1.3
+++ Legacy_AdminControllerStrategy.class.php   20 Aug 2008 14:37:57 -0000
@@ -157,6 +157,8 @@
          
          if ($dirname == 'legacy') {
             return $principal->isInRole('Site.Administrator');
+         } elseif ( $dirname == 'legacyRender' && substr($_SERVER['REQUEST_URI'], -7) == 'css.php' ) {
+            return $this->mController->mRoot->mContext->mXoopsUser->isAdmin(0);
          }
          
          return $principal->isInRole("Module.${dirname}.Admin");
returnはお好みで


別件ですが、Notice [PHP]: Constant XOOPS_LEGACY_PATH already defined in file対策
diff -u -r1.4 css.php
--- css.php   18 May 2008 06:08:45 -0000   1.4
+++ css.php   20 Aug 2008 14:39:33 -0000
@@ -1,9 +1,6 @@
 <?php
 require_once "../../../mainfile.php";
 
-$root=&XCube_Root::getSingleton();
-$root->mController->executeCommonSubset(false);
-
 //
 // @todo Why does this file know Legacy_RenderSystem?
 //
投票数:1 平均点:10.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2008-8-21 0:05
minahito  Lieutenant 登録日: 2006-3-20   投稿数: 394
バグトラに登録しておきましたぁ〜
非常に嫌なバグですね。
こりゃ HOT FIX をアナウンスしたほうがいいかも……

http://sourceforge.net/tracker/index.php?func=detail&aid=2062535&grou...
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2008-8-21 2:03
gusagi  Lieutenant 登録日: 2006-3-19   投稿数: 309
引用:

SCRIPT_NAME はCGI版などで、'/cgi-bin/php' になったりします。
REQUEST_URI を分解するのが一番堅いと思います。
(REQUEST_URIであれば、CGI版もApacheモジュール版も同じ値になる)
WebサーバがIISの場合、REQUEST_URIって設定されない場合がありませんでしたっけ?
(protectorでもその対策コードを見た記憶があります)

basenameを掛けて判定するのであれば、PHP_SELFとかってどうなんでしょう?
cgi版の動作が判っていないので、逆に問題が出るのかも知れませんが・・・
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2008-8-21 5:24 | 最終変更
GIJOE  Admiral 登録日: 2006-3-20   投稿数: 3708
引用:

gusagiさんは書きました:
WebサーバがIISの場合、REQUEST_URIって設定されない場合がありませんでしたっけ?
確かにこの件をスッカリ忘れてました。

「REQUEST_URIがあればそれを利用して、無かったらPHP_SELFを利用する」
というのが一番問題のない手順とされてますね。

ただこのコードが何度も登場するのはいまいちですよね。

$GLOBALS['xoopsRequestUri'] は…ダメ?

# 今、Legacy_Controllerをあらためて読みなおしてみて納得。
# IISでは $_SERVER['REQUEST_URI'] 自体を再構成しているんですね。
# だから、REQUEST_URI依存のコードを書いても、問題にならなかった、と。
# X2のinclude/common.php も、もちろんそうなってました。
# Protectorに同じコードがあるのは、その前の処理だから。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2008-8-21 5:37
GIJOE  Admiral 登録日: 2006-3-20   投稿数: 3708
引用:

Marijuanaさんは書きました:
+         } elseif ( $dirname == 'legacyRender' && substr($_SERVER['REQUEST_URI'], -7) == 'css.php' ) {
+            return $this->mController->mRoot->mContext->mXoopsUser->isAdmin(0);
          }
それはさすがに手抜きしすぎじゃないですかね

XOOPS_URL/modules/legacyRender/admin/(任意)?css.php
で、事実上、legacyRenderの管理者権限取られてますよ。

PHP_SELFだと、PATH_INFOにcss.phpを渡す、という手があるし…

「PATH_INFOがemptyで、かつ、PHP_SELFの文字列の最後がcss.php」
という条件でなら完璧かな?
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 .2 | 投稿日時 2008-8-21 10:03
Marijuana  Warrant Officer 登録日: 2006-10-30   投稿数: 179
引用:

GIJOEさんは書きました:

XOOPS_URL/modules/legacyRender/admin/(任意)?css.php
で、事実上、legacyRenderの管理者権限取られてますよ。
return $this->mController->mRoot->mContext->mXoopsUser->isAdmin(0);
なのでどれかのモジュールに管理権限無いとダメですし、そんな悪さするような奴に管理権限与えるなで

管理画面で権限の条件変更したいなんて他でないと思うのでcss.phpの先頭で定数でも定義して、Legacy_AdminControllerStrategy.class.phpで定数のチェックするのが簡単で確実なのかも知れないですね
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2008-8-21 18:42
tomoro  Warrant Officer 登録日: 2007-2-20   投稿数: 162
私のサイトや知り合いの方のところも、2.1.5にアップしてから、管理画面が崩れてしまっています。(CSSが読み込まれていないような状態)
一回更新ボタンを押せば、元の画面に戻るのですが、また、管理メニュー内の「モジュールの管理」などをクリックすると、画面が崩れてしまいます。

それで、こちらの内容を参考にしながら、
Legacy_AdminControllerStrategy.class.php
内を書き換えて、アップしてみたのですが、CSSが読み込まれていないようで変化はありません。

それで、もしどなたかよければ、私が書き間違えているかもしれないので、適用されたLegacy_AdminControllerStrategy.class.phpをダウンロードすることはできないでしょうか。

また、いくつか利用しているサーバーのうち、XREAとCORESEVERにのみ、この現象が出ていまして、上記サーバーを使っている友達も多く、どうにかお願いできないかと思っています。

よろしくお願いします。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2008-8-22 0:16
Marijuana  Warrant Officer 登録日: 2006-10-30   投稿数: 179
$_SERVER['REQUEST_URI']じゃダメでしたね・・・
引用:
「PATH_INFOがemptyで、かつ、PHP_SELFの文字列の最後がcss.php」
この条件で一時しのぎのプリロード書いてみました。
XOOPS_ROOT_PATH/preloadに入れるだけです。
強引なやり方してます^^;

css.phpでNotice出るのは各自で修正してください。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2008-8-22 5:23
GIJOE  Admiral 登録日: 2006-3-20   投稿数: 3708
引用:

Marijuanaさんは書きました:
return $this->mController->mRoot->mContext->mXoopsUser->isAdmin(0);
なのでどれかのモジュールに管理権限無いとダメですし、そんな悪さするような奴に管理権限与えるなで
なるほど、「いずれかの管理権限」チェックがちゃんと入っていたんですね。

引用:
管理画面で権限の条件変更したいなんて他でないと思うのでcss.phpの先頭で定数でも定義して、Legacy_AdminControllerStrategy.class.phpで定数のチェックするのが簡単で確実なのかも知れないですね
私もこっちに賛成です。
文字列の終わりがcss.phpなら、みたいな条件式、いかにも泥縄的なパッチですから。

_LEGACY_PREVENT_LOAD_CORE_

みたいな感じで何か一つ定数を定義すると良いですね。

_LEGACY_ALLOW_ACCESS_FROM_ANY_ADMINS_
「あらゆる管理者からのアクセスを許可する」くらいかな
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2008-8-22 8:56 | 最終変更
tomoro  Warrant Officer 登録日: 2007-2-20   投稿数: 162
Marijuanaさん、ありがとうございます。

引用:
この条件で一時しのぎのプリロード書いてみました。

ダウンロードさせていただいて、試してみたのですが、現象は変わりませんでした。

あと、気になるのですが、パッチとかかけないで、2.1.5そのままの状態でいうと、FIREFOXだと管理画面が崩れたりしないのですが、IE6だと崩れた状態にかります。
これって、IE6のバグとかなんでしょうか?
ひとまず、友達には、FIREFOXを使ってもらうようにしていますが、できれば、IE系でも見られるとありがたいかな・・と。
※IE7は使ってません。

HD1.0.2正式版でも同じ現象が見られます。

ほかの方はどうなんでしょう。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2008-8-22 9:57
Marijuana  Warrant Officer 登録日: 2006-10-30   投稿数: 179
引用:
あと、気になるのですが、パッチとかかけないで、2.1.5そのままの状態でいうと、FIREFOXだと管理画面が崩れたりしないのですが、IE6だと崩れた状態にかります。
書かれてる内容から推測すると、単にcss.phpでNoticeが出ててIE6でcssが適用されないだけじゃないかな
#IE6無いので検証出来ない^^;

_LEGACY_ALLOW_ACCESS_FROM_ANY_ADMINS_を使ったものをアップしたのでこちらを試してみてください
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2008-8-22 10:33
tomoro  Warrant Officer 登録日: 2007-2-20   投稿数: 162
Marijuanaさん、ご対応ありがとうございます。

引用:
_LEGACY_ALLOW_ACCESS_FROM_ANY_ADMINS_を使ったものをアップしたのでこちらを試してみてください

ダウンロードさせていただいたものを解凍してアップしてみたのですが、結果は、以前と同じで、やはり崩れました{{(>_<)}}

これって私だけの現象なのかな・・。
他にXREAとかCORESERVERとか使っている方で、こういう現象って出ていないんでしょうか?
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2008-8-22 17:39
Marijuana  Warrant Officer 登録日: 2006-10-30   投稿数: 179
引用:
ダウンロードさせていただいたものを解凍してアップしてみたのですが、結果は、以前と同じで、やはり崩れました{{(>_<)}}
IEのキャッシュクリアかtemplates_cをクリアで直らないですか?
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2008-8-22 22:39 | 最終変更
tomoro  Warrant Officer 登録日: 2007-2-20   投稿数: 162
Marijuanaさん、ありがとうございます。

引用:
IEのキャッシュクリアかtemplates_cをクリアで直らないですか?

上記を行ってみましたが、現象は変わりませんでした。
ただ、友達が、IE7だとデフォルトの2.1.5で管理画面は崩れないとメールしてきてました。
また、まわりは、IE6環境が多いのですが、今後、XOOPSが次へバージョンアップした際、この現象って回避できるものでしょうか。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2008-8-23 1:18
Marijuana  Warrant Officer 登録日: 2006-10-30   投稿数: 179
xreaのs300で試しましたが単に広告表示になってるだけじゃないでしょうか?
IE6に戻して試しましたがIE6では問題なく、FireFox3では表示が崩れました。
広告表示を切ればFireFox3でも崩れずに表示されました。

広告表示だとheader('Content-Type:text/css;');が効かずにContent-Type: text/html;で出力されるみたいですね。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2008-8-23 9:20
tomoro  Warrant Officer 登録日: 2007-2-20   投稿数: 162
Marijuanaさん、ありがとうございます。

引用:

Marijuanaさんは書きました:
xreaのs300で試しましたが単に広告表示になってるだけじゃないでしょうか?
IE6に戻して試しましたがIE6では問題なく、FireFox3では表示が崩れました。
広告表示を切ればFireFox3でも崩れずに表示されました。

私の場合は、有料サービスにて独自ドメインにて運用しています。
なので、広告が原因ではないようです。
ドメインは、知り合いの方からもらったものを移転したものですが、これは関係ないとして、Marijuanaさんとは逆に、依然、IE6では問題があって、FIREFOX3だと問題ないんですよね・・。
ひょっとしたら、私のXREAの環境で何か問題があるのかもしれません。
Marijuanaさんにはいろいろ対応していただいて、結果がだせずすません。
私だけの現象かもしれませんので、もうすこし、やってみます。
投票数:1 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 .2 | 投稿日時 2008-8-23 9:31
nor  1st Class 登録日: 2007-7-6   投稿数: 41
皆さんこんにちは。
サーバを一つ借りるつもりだったのでCORESERVERを借り、hd_full_1_0_2RCをダウンロードさせていただきテストしてみました。
どちらもUTF-8でインストールしました。

ローカル → IE6、FireFox:問題なし
CORESERVER → FireFox:問題なし・IE6管理画面レイアウト崩れる

となりました。それぞれの環境は
ローカル
OS: Windows NT 3.2G 5.1 build 2600
PHP: 5.2.1
MySQL: 5.0.37
XOOPS: XOOPS Cube Legacy 2.1.5

error_reporting: 6143
display_errors: 1
memory_limit: 64
magic_quotes_gpc: 1
allow_url_fopen: 1
safe_mode: 0

CORESERVER
OS: Linux 2.6.23.16-smp
PHP: 5.2.5
MySQL: 5.1.22-rc
XOOPS: XOOPS Cube Legacy 2.1.5

error_reporting: 6143
display_errors: 1
memory_limit: 90
magic_quotes_gpc: 0
allow_url_fopen: 1
safe_mode: 1

何かのご参考になればと思います。
投票数:1 平均点:10.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2008-8-23 19:29
minahito  Lieutenant 登録日: 2006-3-20   投稿数: 394
nor さん貴重な情報ありがとうございます。
そして別トピで CORESERVER の魅力についてとくとくと語ってみませんか(←借りようかと思ってる人)

引用:

ローカル → IE6、FireFox:問題なし
CORESERVER → FireFox:問題なし・IE6管理画面レイアウト崩れる

これだけ見ると safe_mode の条件のように見えますが、やはり CGI 版かそうでないかというところでしょうか。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2008-8-24 13:37
Marijuana  Warrant Officer 登録日: 2006-10-30   投稿数: 179
CORESERVERならcgi版に切り替えが出来るはずですので、お手数ですがcgi版に切り替えて試して頂けないでしょうか?
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2008-8-24 14:25
nor  1st Class 登録日: 2007-7-6   投稿数: 41
Marijuanaさん、こんにちは。

http://www.coreserver.jp/help/index.php/phpcgi/
こちらのページを参考に
AddHandler application/x-httpd-phpcgi .php
と一行書いた.htaccessファイルをpublic_html直下に置きましたが状況は変わりませんでした。

設置場所、記述方法など合っているのか解らないので御指示頂ければ作業します。

ちなみにMarijuanaさんのBugFix2をアップしても状況は変わりませんでした。

サーバー上はHDをインストールしただけの状態なので、今は何でも出来ますし、やりますよ
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2008-8-24 15:10
Marijuana  Warrant Officer 登録日: 2006-10-30   投稿数: 179
ダメでしたか。。。

再確認なのですが2.1.4のcss.phpを使用した場合は問題ないんですよね?

XOOPS_URL/modules/legacyRender/admin/css.php?file=style.css

XOOPS_URL/modules/legacyRender/admin/css.php?file=module.css&dirname=legacy
にブラウザで直接アクセスした時になにかエラーなど出てないか確認してみてください。(CSSが途中で途切れてる場合もあるかもしれません)
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2008-8-24 17:05
nor  1st Class 登録日: 2007-7-6   投稿数: 41
引用:

再確認なのですが2.1.4のcss.phpを使用した場合は問題ないんですよね?
これは同じ場所で試したわけではないです。今回借りた所はHD1.0.2をインストールしただけです。
ただ、他で運用しているCORESERVERはXCL2.1.4のままなのですが、そこでは管理画面のレイアウト崩れの現象は出ていません。
引用:

XOOPS_URL/modules/legacyRender/admin/css.php?file=style.css

XOOPS_URL/modules/legacyRender/admin/css.php?file=module.css&dirname=legacy
にブラウザで直接アクセスした時に・・・
ご指示のURLにアクセスしてみたのですが、cssファイルをダウンロードして?textエディタが開いてしまいます。

開いた内容を書けば良いですか?
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2008-8-24 17:11
nor  1st Class 登録日: 2007-7-6   投稿数: 41
一応XCL2.1.4で運用している(レイアウト正常)サーバの環境とHD1.0.2をインストールした(レイアウト崩れ)のサーバ環境を並べておきます。

OS: Linux s12 2.6.23.16-smp 
PHP: 5.2.5
MySQL: 5.1.20-beta
XOOPS: XOOPS Cube Legacy 2.1.4

error_reporting: 0
display_errors: 1
memory_limit: 90
magic_quotes_gpc: 0
allow_url_fopen: 1
safe_mode: 1
OS: Linux s46 2.6.23.16-smp
PHP: 5.2.5
MySQL: 5.1.22-rc
XOOPS: XOOPS Cube Legacy 2.1.5

error_reporting: 6143
display_errors: 1
memory_limit: 90
magic_quotes_gpc: 0
allow_url_fopen: 1
safe_mode: 1
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2008-8-24 20:43
Marijuana  Warrant Officer 登録日: 2006-10-30   投稿数: 179
FireFoxだとブラウザに表示されると思います。
#自分のサイトをIE6で試したらダウンロードすら出来なかった(汗)

画像のURLがフルパスで出るので適当にマスクするなり置換してください。
#一時的に管理者のID/PASSをPMで教えて頂ければ直接見てみますが・・・
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2008-8-24 21:16
nor  1st Class 登録日: 2007-7-6   投稿数: 41
MarijuanaさんのデベロッパースバイブルのページのほうでPMしておきました。
原因解るといいですね。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2008-8-25 1:22
Marijuana  Warrant Officer 登録日: 2006-10-30   投稿数: 179
norさん、ありがとうございます。
お陰で解決の糸口が見えました。

PMの内容で解決出来るようであればminahito氏に報告します。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2008-8-26 1:53 | 最終変更
nor  1st Class 登録日: 2007-7-6   投稿数: 41
Marijuanaさん、それからレイアウト崩れに悩んでいる方々、遅くなってすみませんでした。

先ほどMarijuanaさんの指示通りにファイルをアップしたところ、IE6でも正常に表示されるのを確認しました。
ファイル置き場などは勝手に書いて良いか分からないのでMarijuanaさんに書いていただこうと思います。

本当、すごいなぁと思います。ありがとうございました。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 .2 | 投稿日時 2008-8-26 9:39 | 最終変更
Marijuana  Warrant Officer 登録日: 2006-10-30   投稿数: 179
引用:
先ほどMarijuanaさんの指示通りにファイルをアップしたところ、IE6でも正常に表示されるのを確認しました。
確認していただき、ありがとうございます。
こちらに置いてあります。

BugFix2.zipからの変更は、css.phpの2箇所です。
1.IE6でcssが読み込まれない対策
session_cache_limiter('private_no_expire');

2.$xoopsOption['nocommon']=1の時と通過するロジックが若干異なる(返ってくる結果は同じ)ので$xoopsOption['nocommon']=1と同じ振る舞いになるようにやや強引なおまじない(笑)
$root =& XCube_Root::getSingleton();
unset($root->mContext->mXoopsModule);

1はIE6で一部の環境の場合のみ必要です。(どんな環境かまでは調査していません)
2は無くても今のところ何も変わりません。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿.1 | 投稿日時 2008-8-27 4:07
GIJOE  Admiral 登録日: 2006-3-20   投稿数: 3708
引用:

Marijuanaさんは書きました:
引用:
先ほどMarijuanaさんの指示通りにファイルをアップしたところ、IE6でも正常に表示されるのを確認しました。
確認していただき、ありがとうございます。
[ url=http:marijuana.ddo.jp/BugFix3.zip ]こちら[ /url ]に置いてあります。
//が抜けてます
http://marijuana.ddo.jp/BugFix3.zip
そんな判りづらい状況で解決したのは素晴らしいですね。

引用:
BugFix2.zipからの変更は、css.phpの2箇所です。
1.IE6でcssが読み込まれない対策
session_cache_limiter('private_no_expire');
これで解決する、というのが不思議なんですが、何故なんでしょうね?
サーバ環境+IE6という複合条件だから、としか言いようがないのかなあ。
(うちではIE6でも再現しません)

とりあえず、#2062535にコメントつけておきました。
投票数:2 平均点:10.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2008-8-27 9:19
tomoro  Warrant Officer 登録日: 2007-2-20   投稿数: 162
Marijuanaさん、ご対応ありがとうございます。

私の環境でも、管理画面が壊れることなく表示されました。
知り合い一同、大変感謝しております。

ありがとうございました。
投票数:0 平均点:0.00
前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2008-8-27 12:01
Marijuana  Warrant Officer 登録日: 2006-10-30   投稿数: 179
引用:
//が抜けてます
(; ̄ー ̄A アセアセ・・・
投稿の方も修正しました。

引用:
これで解決する、というのが不思議なんですが、何故なんでしょうね?
サーバ環境+IE6という複合条件だから、としか言いようがないのかなあ。
恐らくIE6のバグだとは思うのですが、サーバの環境まで調べてる余裕(ヤル気)が。。。

UAでも見てIE6の時だけsession_cache_limiter('private_no_expire');にするとかの方がいいのかなぁ
投票数:1 平均点:10.00

  条件検索へ


Back to Page Top
MainMenu
Manuals
Search
XOOPS Official & Dev.
XOOPS Communities