Fedora4でMovableTypeダイナミックパブリッシング使用はちと大変

MovableTypeのダイナミックパブリッシングを使用しようと思ったところ上手くいかなかったのでprint()関数を駆使して原因を調査しました。

どこかのプログラマーが言ってました、printf があればデバックはできる
同感です。今回も解決できたのでますます同感です

さて、まず何が上手くいかないかと言うと、
MovableTypeでダイナミックパブリッシングを行う設定にしてページを表示しようとすると画面が真っ白になってしまいます。

ダイナミックパブリッシングとは、記事ページをhtmlとして前もって作成するのでは無く、ページにアクセスが来たときにPHPによりページを作成すると言うものです。
そこで最初にアクセスされる mtview.php を調べてみました。

▼mtview.php
6行しか無い簡単なコードなので全行に print( 'かもすぞ0' ); などと出力を追加してみました。
すると4行目の

$mt->view();

でコケてるようでした。
そこで mt.php に定義されてる MT::view() メソッドに print(); を打ちに進みます

▼mt.php
mt.php と同様に進めていくとここで止まっている事がわかりました。

$this->db = new $mtdbclass($this->config['DBUser'],

$mtdbclass を print(); で出力してみると MTDatabase_mysql だったので grep してクラスを探すと次は mtdb_mysql.php でした。
またまた進みます。

▼mtdb_mysql.php
MTDatabaseBase を継承してるだけのクラスでした、、、なので grep して次は mtdb_base.php へ進みます

▼mtdb_base.php
ここでコケてました

$this->db($dbuser, $dbpassword, $dbname, $dbhost);

MTDatabaseBase クラスに db() メンバ関数は無いため親の ezsql クラスに進みます。
ezsql_mysql.php です。

▼ezsql_mysql.php
ここでコケてます。

$this->dbh = @mysql_connect($dbhost,$dbuser,$dbpassword);

これはMySQLサーバに接続する為の関数らしいです。
でも各パラメーターを print() で表示してみたところ全く問題ありませんでした。

さて、どうしたものか、、、、
そこで次は googleMovableType ダイナミックパブリッシング」 で調べてみると PHP5+MySQL での問題が分かりました。

▼解決
PHP5はデフォルトでMySQLが使用できないそうです。
そこでMySQL用のパッケージをインストールしなければいけません。
Fedora4のCDより

php-mysql-5.0.1-10.i386.rpm

をインストールしたところMovableTypeダイナミックパブリッシングが正常動作!

おつかれさまでしたオレ