■ユーザーズフォーラム リニューアルのお知らせ
新規投稿は新ユーザーズフォーラムにお願いします。
このフォーラムは閲覧専用のアーカイブです。

携帯サイトが表示できません。

yasu > 携帯サイトが表示できません。 @ 2010/5/11 14:56
はじめまして。最近こちらのCMSを使ったサイトを作ろうということで
さわり始めたものです。

PCサイトの方は正常に見れております。
携帯サイト制作のマニュアルの手順で作業をしました。

テンプレートは正常に参照されているようです。(テンプレート部分は変更すると反映されます。)

ページ管理から追加した内容へアクセスできていないようです。以下のようなメッセージが出ております。
以下はページカテゴリ「mobile」でページ名を「about」にした場合でした。

------------------
404 NOT FOUND
エラー:
リクエストされたアドレス '/m/about.html' はこのサーバにありませんでした。
------------------

どういった原因が考えられますでしょうか。
よろしくお願いいたします。

実行環境
OS: Red Hat Enterprise Linux ES release 4
webサーバ: Apache/2.0.52
php: 4.3.9
BaserCMS: 1.5.7
ryuring > Re: 携帯サイトが表示できません。 @ 2010/5/12 2:05
こんにちは。

モバイル用ページを作成する際の手順は間違ってないと思います。
同様の手順でページを追加したところこちらでは正常に表示されました。

ただ、BaserCMSは、サーバー上でエラーが発生した際も 404 NOT FOUND なります。
管理画面のシステム設定にて、制作・開発モードを「デバッグモード1」に変更すると、
エラーメッセージが表示される場合がありますので試してみてください。

また、サーバー上の次の場所のファイルが正しく生成されているか確認してください。

/app/views/pages/mobile/about.html.ctp

もしくは、

/app/webroot/themed/{テーマ名}/pages/mobile/about.html.ctp

よろしくお願いしますー

Twitter:@ryuring
baserCMS総合サービスサイト ビーコミ

yasu > Re: 携帯サイトが表示できません。 @ 2010/5/12 11:55
お世話になっております。

アドバイスの通り、制作・開発モードを「デバッグモード1」に変更してみましたが、
エラーメッセージは表示されませんでした。

以下のファイルも存在しております。
/app/webroot/themed/{テーマ名}/pages/mobile/about.html.ctp

テーマを「なし」にしてカテゴリとページを作りなおしましたが、変化ありませんでした。
以下のパスでファイルは生成されています。
/app/views/pages/mobile/about.html.ctp

申し訳ありませんが、ほかに原因は考えられるでしょうか?
よろしくお願いいたします。
ryuring > Re: 携帯サイトが表示できません。 @ 2010/5/13 8:53
こんにちは。あといくつか教えてください。

■ 実際に携帯端末の実機で表示されいる状況でしょうか?

■ 実際に呼び出しているURLをドメイン名を伏せて教えてください。セッションIDが付加されてませんか?

■ 携帯実機での確認の場合、PCのブラウザで直接URLを打ち込むとどうなりますか?
http://xxx.xx/m/about.html 等

■ 管理画面より、該当ページの「確認」ボタンをクリックするとどうなりますか?

よろしくお願いします。

Twitter:@ryuring
baserCMS総合サービスサイト ビーコミ

yasu > Re: 携帯サイトが表示できません。 @ 2010/5/13 10:01
お世話になります。

> ■ 実際に携帯端末の実機で表示されいる状況でしょうか?
携帯端末からも確認しております。
$content_for_layoutで呼び出している箇所が
「404 NOT FOUND
Error: The requested address '/m/about.html' was not found on this server.」
となっております。

> ■ 実際に呼び出しているURLをドメイン名を伏せて教えてください。セッションIDが付加されてませんか?
http://xxx.xxxx.xxx/m/about.html
携帯端末より直接上記のURLを打ち込んでおります。

> ■ 携帯実機での確認の場合、PCのブラウザで直接URLを打ち込むとどうなりますか?
同じような表示がでます。

> ■ 管理画面より、該当ページの「確認」ボタンをクリックするとどうなりますか?
PCサイトのテンプレートでコンテンツの内容が表示されております。
404にはなっておりません。

お手数をおかけします。何卒よろしくお願いいたします。
ryuring > Re: 携帯サイトが表示できません。 @ 2010/5/13 10:36
こんにちは。さらに質問させてください。

■ PC用のページは正常に表示されてますか?

■ スマートURLはONですか?

■ サブディレクトリ内にBaserCMSを配置していますか?

■ /baser/controllers/pages_controller.php の 479行目あたりに次の文がありますので、

$path = func_get_args();


その次の行に以下2行を追記し、先程のURLを表示させてください。
画面に変化がありましたら、表示された内容をここに貼り付けてください。

var_dump($path);
var_dump($_GET);


よろしくお願いしますー

Twitter:@ryuring
baserCMS総合サービスサイト ビーコミ

yasu > Re: 携帯サイトが表示できません。 @ 2010/5/13 11:59
お世話になります。

> ■ PC用のページは正常に表示されてますか?
正常に表示されています。

> ■ スマートURLはONですか?
スマートURLは有効になっています。

> ■ サブディレクトリ内にBaserCMSを配置していますか?
ドキュメントルートに直接配置しております。

> ■ /baser/controllers/pages_controller.php の 479行目あたりに・・・
以下のような出力がありました。

array(1) { [0]=> string(16) "pages/about.html" } array(1) { ["url"]=> string(12) "m/about.html" }

Warning (2): Cannot modify header information - headers already sent by (output started at /home/*****/******/baser/controllers/pages_controller.php:480) [CORE/baser/views/helpers/mobile.php, line 47]

何卒よろしくお願いいたします。
ryuring > Re: 携帯サイトが表示できません。 @ 2010/5/13 12:09
こんにちは。

環境は全く問題なさそうですね。

では、先程のファイルの460行目に次の文がありますので、ここをコメントアウトしてページを表示させてみてください。

$this->notFound();


よろしくお願いします。

Twitter:@ryuring
baserCMS総合サービスサイト ビーコミ

yasu > Re: 携帯サイトが表示できません。 @ 2010/5/13 15:03
お世話になります。

該当の箇所をコメントアウトしました。
表示に変化ありませんでした。下記のような表示です。

「404 NOT FOUND
エラー: リクエストされたアドレス '/m/about.html' はこのサーバにありませんでした。」

何卒よろしくお願いいたします。
ryuring > Re: 携帯サイトが表示できません。 @ 2010/5/13 15:23
困りましたね。あたりがハズレてしまいました。。

後は、さきほどのファイルの469行目あたりに、次の文がありますので、

$this->render(join('/', $path));


その手前の行に次の2行を貼り付けて実行して表示結果を教えてください。

var_dump($this->subDir);
var_dump($path);

Twitter:@ryuring
baserCMS総合サービスサイト ビーコミ

yasu > Re: 携帯サイトが表示できません。 @ 2010/5/13 15:42
すみません。お手数をおかけします。

以下の内容が表示されます。

string(6) "mobile" array(1) { [0]=> string(10) "about.html" }

Warning (2): Cannot modify header information - headers already sent by (output started at /home/nagase-hifuka/htmlv2/baser/controllers/pages_controller.php:469) [CORE/baser/views/helpers/mobile.php, line 47]


何卒よろしくお願いいたします。
ryuring > Re: 携帯サイトが表示できません。 @ 2010/5/13 17:04
これまで確認した内容を見た限り、出力値は正常です。
何故この状態で Not Found になるのかが全くわかりません。

後は、実際にビューファイルの読み込み部分を確認していくしかないのですが、
/cake/libs/views/view.php の 675行目に、次の文がありますので、

$out = ob_get_clean();


その次の行に、以下2行を貼り付けて表示結果を教えてください。

var_dump($___viewFn);
var_dump($out);


1行目の結果は、実際にビューファイルとして読み込むパスとなるはずです。
ビューファイルのパスが間違ってないか確認してください。

2行目は、実際に読み込んだ内容が入るはずです。666行目、または、668行目でincludeしています。
※ 日本語の場合文字化けした状態で表示されます。

なお、この処理は通常、ビューの出力時とレイアウトの出力時の2回呼ばれます。
従って、出力結果は2回ずつ表示されます。何回出たかも教えてください。

また、この行まで行き着かない可能性もあります。
その場合は、Not Foundがそのまま表示されますので、その前に原因があるという事です。

おそらく環境の問題だと思うのですが、業務等で、緊急の場合は、
BaserCMSの公式サイトのお問い合わせフォームより、有償サポートをご依頼ください。
※ FTPでの接続環境が前提となります。

よろしくお願いします。

Twitter:@ryuring
baserCMS総合サービスサイト ビーコミ

yasu > Re: 携帯サイトが表示できません。 @ 2010/5/14 11:29
大変にお世話になります。

以下のような結果になりました。

--ここから--

string(84) "/home/****/html/app/webroot/themed/htdocs2010/pages/mobile/about.html.ctp" string(73) "
{ページ管理で編集した内容}
" string(83) "/home/****/html/app/webroot/themed/htdocs2010/layouts/mobile/default.ctp" string(1387) "
{テンプレートが文字化けして表示されている。ページ管理で編集した内容が差し込まれています!}
"
Warning (2): Cannot modify header information - headers already sent by (output started at /home/****/html/cake/libs/view/view.php:676) [CORE/baser/views/helpers/mobile.php, line 47]
string(58) "/home/****/html/baser/views/errors/error404.ctp" string(210) "
404 NOT FOUND
Error: The requested address '/m/about.html' was not found on this server.
" string(83) "/home/****/html/app/webroot/themed/htdocs2010/layouts/mobile/default.ctp" string(1527) "
{テンプレートが文字化けして表示されている。差し込みの部分は
404 NOT FOUND
Error: The requested address '/m/about.html' was not found on this server.
となっている。}
"
{テンプレートが普通に表示されている。差し込みの部分は
404 NOT FOUND
Error: The requested address '/m/about.html' was not found on this server.
となっている。}

--ここまで--

3回表示されたようです。1回目の表示では404にならずにページの内容が表示されております。

よろしくお願いいたします。
ryuring > Re: 携帯サイトが表示できません。 @ 2010/5/15 18:07
一回ページの生成が完了した後に、Not Found になっているようですね。
正直なところ、ますますわけがわからない状況です。

独自サーバーをご利用のようですが、
基本的な事として、PHPのmbstring関数は利用できるようになってますか?

/baser/views/helpers/mobile.php の、50行目、51行目で、mbstring関数を利用しています。

この前後まで処理が行き着いているか調べてみてください。

Twitter:@ryuring
baserCMS総合サービスサイト ビーコミ

yasu > Re: 携帯サイトが表示できません。 @ 2010/5/17 10:49
ややこしいことになって申し訳ありません。

ご指摘の箇所の前後で「var_dump($out);」を記述してみました。

var_dump($out);
            $out = mb_convert_kana($out, "rak", "UTF-8");
            $out = mb_convert_encoding($out, "SJIS", "UTF-8");
var_dump($out);

どちらも正常に出力されています。
前者は変換前(文字化けしています)、後者は変換後(正常な表示でカタカナは半角)となっています。
この箇所は2回出力され、1回目はページ管理で入力したものが入っており、2回目はNot Foundになっています。

自分でも処理の流れを追跡してみたいのですが、どちらのファイルを見たらよろしいでしょうか?

よろしくお願いいたします。
ryuring > Re: 携帯サイトが表示できません。 @ 2010/5/17 18:35
通常は、処理が2回走る事がはないのですが、おそらく一回目で正常なデータを取得したその後に、エラーが発生しているのではないかと考えています。

処理の流れをビューの生成あたりから書きますので実際に追跡してみてください。

/baser/controllers/pages_controller.php
469行目あたり
$this->render(join('/',$path));


/cake/libs/controller/controller.php
806行目
$this->output .= $View->render($action, $layout, $file);


/cake/libs/view/view.php
376行目
$out = View::_render($viewFileName, $this->viewVars);
※ コンテンツ部分のHTMLを生成

388行目
$out = $this->renderLayout($out, $layout);
※ コンテンツ部分のHTMLを含めたレイアウト部分のHTMLを生成

668行目
@include ($___viewFn);
※ 実際にレイアウトファイルを読み込む

466行目
$this->_triggerHelpers('afterLayout');
※ ヘルパーファイルによるHTML生成後処理


/baser/views/helpers/mobile.php
51行目
$out = mb_convert_encoding($out, "SJIS", "UTF-8");
※ モバイルヘルパーによるSJIS変換


/cake/dispatcher.php
240行目
echo($controller->output);
※ HTMLを出力


ざっとこんな感じです。

SJIS変換が終わった後は、処理が、view → controller → dispatcher に戻り、dispatcher でHTMLを出力するだけになるので、エラーが起きそうなところは特に見当たりません。
ヘルパーによるHTML生成後処理(afterLayout)で失敗しているかもしれないので、
一度、Viewクラスの、486行目をコメントアウトしての実行結果も教えてください。
$helper->{$callback}();

よろしくお願いします。

Twitter:@ryuring
baserCMS総合サービスサイト ビーコミ

yasu > Re: 携帯サイトが表示できません。 @ 2010/5/18 15:25
お世話になります。

取り急ぎコメントアウトしたときの実行結果です。
$helper->{$callback}();
こちらをコメントアウトしたところ下記のようになりました。文字コードはutf-8で出力されましたのでブラウザ上では文字化けしています。

<?xml version="1.0" encoding="Shift_JIS"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift-JIS" />
<title>ビューがありません|ああああ</title><meta name="description" content="あああああ"/><meta name="keywords" content="あああ,ああああ"/></head>
<body bgcolor="#FFFFFF" id="MobilePages">
<div style="color:#333333;margin:3px">
<div style="display:-wap-marquee;text-align:center;background-color:#8ABE08;">
<span style="color:white;">あああああ</span>
</div>
<center><span style="color:#8ABE08;font-weight:bold">あああああ</span></center>
<hr size="2" style="width:100%;height:1px;margin:2px 0;padding:0;color:#8ABE08;background:#8ABE08;border:2px solid #8ABE08;" />

<h2>ビューがありません</h2>
<p class="error">
	<strong>エラー: </strong>
	ビュー <em>PagesController::</em><em>mobile_display()</em> が見つかりません。</p>
<p class="error">
	<strong>エラー: </strong>
	ファイル /home/nagase&#45;hifuka/htmlv2/app/views/themed/htdocs2010/pages/mobile/display.ctp を作成したことを確認してください</p>
<p class="notice">
	<strong>注意: </strong>
	このエラーメッセージをカスタマイズしたい場合は、 app/views/errors/missing_view.ctp を作成してください</p>
<br />
<hr size="1" style="width:100%;height:1px;margin:2px 0;padding:0;color:#8ABE08;background:#8ABE08;border:1px solid #8ABE08;" />
<span style="color:#8ABE08">◆ </span><a href="/m/">トップへ</a><hr size="1" style="width:100%;height:1px;margin:2px 0;padding:0;color:#8ABE08;background:#8ABE08;border:1px solid #8ABE08;" />
<center><font size="1">(C)xxxxxxx</font></center>
</div>
</body>
</html>

何卒よろしくお願いいたします。
ryuring > Re: 携帯サイトが表示できません。 @ 2010/5/18 20:02
こんにちは。

コードを見たところ、PagesControllerのmobile_displayメソッドがおかしいようですね。

通常、call_user_func_array関数によって、処理がdisplayメソッドに移動するのですが、それが移動せず、mobile_displayのまま処理が走っているようです。
そうなると、もちろん、mobile_displayメソッド専用のビューファイルなんて用意されてないので、先ほどのエラーが出てしまってるのかなと。

試しに、/baser/controllers/pages_controller.php の 480行目あたりの次の行を

call_user_func_array( array( $this, 'display' ), $path );


次のように変更してみてください。もしかしたらPHP4の参照渡しの問題かもしれません。

call_user_func_array( array( &$this, 'display' ), $path );


$thisの前に&を入れただけです。

よろしくお願いしますー。

Twitter:@ryuring
baserCMS総合サービスサイト ビーコミ

yasu > Re: 携帯サイトが表示できません。 @ 2010/5/19 11:56
お世話になります。

ご指摘のように修正したところ、無事表示されました。
ありがとうございました。

今後ともよろしくお願いいたします!!
ryuring > Re: 携帯サイトが表示できません。 @ 2010/5/19 12:47
解決できてよかったです。

修正パッチを用意しましたので同じ問題に遭遇されている方は、次のリンク先よりダウンロードしてください。

http://project.e-catchup.jp/issues/983

Twitter:@ryuring
baserCMS総合サービスサイト ビーコミ