ムースの部屋 TOPへ

INDEXPastWill
Mi Pensamiento Diario

ページ分割、部分的成功

またもブロッグに関すること。今日は1日中ブロッグの設定をしていたの。先日失敗したカテゴリー・アーカイブのページ分割をどうにかできないことかと思ったから。そのときの日記にも書いたんだけど、家のLinux機にはちゃんとphpがインストールされている模様。それなのにどうしてもページ分割ができないの。それにページ分割をするためのタグをテンプレートに埋め込み、再構築したときに吐き出されるエラーはphpがサーバにインストールされていないものと一緒なんだ。だからずーっと悩んでいたっていうのが先日までのこと。

今日はたまたま見に行ったサイトの人の日記が、今ムースが格闘しているMovable Typeというもので作られていたの。しかもそのサイトの人は最近、Movable Typeに移行したばかりなの。それなのにムースがやりたいと思っているカレンダーの曜日の色付けやページ分割を難なくやっているの。それを見てちょっぴりショック。だって誰にでも出来るものなのにムースはまだ出来ないんだもん。

そこで今日はちょっぴり考えました。一体何が原因だろうと。今までのことを考えると、Movable Typeの問題というよりは、やっぱりサーバの設定の問題としか思えない。だからまずはphpが正しくインストールされているかどうかから調べ始めたの。先日調べたところでは、phpで書かれたファイルがブラウザを経由して正しく表示されていたし、しかもデータベースに入っていたデータも正しく引っ張ってくることが出来ていたから、今さらphpがおかしいっていうのは変だなと思ったけど、とりあえずphpinfo()なるものをもう1度実行してみたんだ。

phpのインストールに関するサイトを見ていると、このphpinfo()なるものがちゃんと実行されれば、とりあえずphpのインストールは成功しているって書いてあるの。そんなことでphpがちゃんとインストールされているかどうかの問題は解消。

次にphpがちゃんとデータベースと連携しているかどうかの問題。先日、このテストも行なっているし、データベースからちゃんとデータを拾ってきていたのでOKだろうと思ったものの、一応チェック。phpinfo()で得た情報をチェックすると、なんと'./configure'〜中略〜'--without-mysql'となっていたの。これはおかしいって思って、Googleへ検索の旅に出発。Linux機はMySQLというデータベースを使っているので、ちゃんと設定されていると'--with-mysql'と表示されるらしいの。なのに'--without-mysql'と表示されている。でもデータベースに接続できるし…と思いながら調べていくと、「Vine LinuxにおいてRPMを使ってインストールをした場合、'--without-mysql'と表示されていてもデータベースと連携できていることがある」といった感じで書かれたメーリングリストを発見。これを見た瞬間、妙に納得。

そんなことで、じゃあ原因は?と思い悩んだ結果、エラーの部分のソースを見て解析するしかないって思ったの。実は先日もチラリと見ているんだけど、何分phpがわからないムースには何が書かれているかわからないって感じだったの。でも今日は違いました。ありったけの知識を使って、原因は何だろうって生成されたファイルを解析しました。そうしたら何のことはなかったの。

<?php endif; ?>
<?
// Values that can be used in other PHP code on the page
$paginate_num_pages = xx;
$paginate_num_sections = xx;
$paginate_page_selector = 'page';
$paginate_current_page = $_GET['page'];

と書かれていたんだけど、この先でエラーを引き起こすの。だからきっとこの辺だろうって思ったんだ。でもって、ちょっぴりとだけ変えてみたの。

<?php endif; ?>
<?php
// Values that can be used in other PHP code on the page
$paginate_num_pages = xx;
$paginate_num_sections = xx;
$paginate_page_selector = 'page';
$paginate_current_page = $_GET['page'];

というようにphpという言葉をつけたら、あぁ〜ら不思議。ページ分割に成功。っていっても、$paginate_current_page = $_GET['page'];の行で引き起こすエラーについてはいまだに修正できてないけど…。?page=1という引数を渡してあげればいいのはわかっているけど、うまくいかないの。不思議なことに。

まぁ、少なくとも、今日はページ分割が失敗した原因がわかったのでちょっとうれしかったかな。原因がわかったので、今度はMTPaginate.plそのものも修正。233行目くらいかな。上に書かれたのと同じように、

<?php endif; ?>
<?php
// Values that can be used in other PHP code on the page
$paginate_num_pages = $numPages;
$paginate_num_sections = __PAGINATE_NUM_SECTIONS__;
$paginate_page_selector = 'page_selector';
$paginate_current_page = $_GET['page_selector'];

って感じに直したの。これでいつ再構築しても大丈夫じゃないかな。

この修正が終わってちょっと気分がよくなったあと、ふとphp.iniを見てみたの。そうした根本的な原因はそこにあったと判明したんだ。だって79行目あたりで

short_open_tag = Off

ってなっているんだもん。だから<?だけではphpだよって認識してくれないよね。phpにしろ、perlにしろ、スクリプト言語というものをまったくといって知らないムースにはちょっと大変だったけど、今日は少しだけどphpなるものがわかったような気がする。

あとは引数の問題かぁ。その他にもカレンダーの問題もあるし。カレンダーの方はperlだし…。今日はやっとのことでCPANが必要なモジュールをインストールできるようになったけど、Movable Typeには繁栄されていないようだし、まだまだ先は長そう。誰か詳しい人はいないかなって思うけど、ここ北の国の北国コンピュータ学院の友達にはそういう人はいないから。っていうか、こんなムースがかなり知っている方の部類に入っちゃうからね。レベルが低いすぎるかもしれない…。

今日はこんな感じで1日中ページ分割関連に従事していたの。もっと知識をつけたいなぁ。


2004年12月18日(土)




↑エンピツ投票ボタン
My追加 Mail BackTop