http://blog.ishiro.com

2007/5/12 土曜日

WordPressMUインストール

Filed under: WordPress — ishiro @ 5:21:57

WordPressMUはDreamhostだとすんなりインストールできます。ところが、レンタルサーバによっては不具合が多く発生します。特定の環境でOKだったからといって、テストもせずに他の環境での作業見積もりをするのはダメですね。勉強になりました(; ;)

原因を突き止めて解決するまで半日以上かかった問題もありました。chicappaというレンタルサーバにインストールしたのですが、sakuraでも同様の問題が発生すると思いますので、インストール方法と共に問題の症状と解決法も書いておきます。

【WordPress MU のインストール方法】

wordpress.orgからダウンロード。現在のバージョンは1.2.1でした。
1.2.1用の日本語リソースはWPMU Japanese language pack 1.2.1にあります。

ftpのアカウントとapacheでアクセスした場合のユーザが異なるとインストールディレクトリとwp-contentディレクトリのパーミッションを777に変更する必要がありました。ルートディレクトリのパーミッションはインストール後で755に戻す必要があります。

この状態でDBを設定してインストールを完了し、実際にブログを作成すると次のエラーが発生します。

WordPress database error: [Table ‘mydatabase.wp_2_options’ doesn’t exist]
SELECT option_value FROM wp_2_options WHERE option_name = ‘blogname’ LIMIT 1

WordPress database error: [Table ‘mydatabase.wp_2_options’ doesn’t exist]
SELECT option_value FROM wp_2_options WHERE option_name = ’siteurl’ LIMIT 1

WordPress database error: [Table ‘mydatabase.wp_2_options’ doesn’t exist]
SELECT option_value FROM wp_2_options WHERE option_name = ‘post_count’ LIMIT 1

データベースを確認してみても正常にテーブルは存在しています。原因がわからずはまりました(; ;)
色々と調べてみた結果、wp-includes/wpmu-functions.phpのwpmu_create_blog関数に次の一行を追加して解決しました。

// Need to backup wpdb table names, and create a new wp_blogs entry for new blog.
// Need to get blog_id from wp_blogs, and create new table names.
// Must restore table names at the end of function.

define( “WP_INSTALLING”, true ); ←この行を追加

if ( ! $blog_id = insert_blog($domain, $path, $site_id) )
return new WP_Error(’insert_blog’, __(’Could not create blog.’));

と思ったら WordPress MU の不具合のパッチを出しているサイトを発見しました。このパッチを当てても上記の不具合は解決するので、その方が良いでしょう。他にも「ブログ削除時にルートブログのアップローファイルが削除される」という不具合もこれで解決されます。このパッチを当てましょう。

次にwp-config.phpに次の一行を追加します。追加というか置き換えですね。

define (’WPLANG’, ‘jp’);

adminのパスワードを変更します。そして「site admin」→「Options」のDefault Languageをjaに変更します。同じページのPluginsチェックボックスにもチェックをつけて有効とします。ここで、インストールディレクトリのパーミッションを755に戻しました。また、複数のテーマをwp-content/themeディレクトリにインストールし、「サイト管理」→「テーマ」で許可したいテーマにチェックを入れておきます。

この状態で普通に使えるはずでした。ところが、色々と使っていると次の不具合が発生します。再現性100%のものもあれば、不定期で発生するものもあります。

  • 記事投稿時にページが真っ白になる。
  • コメント投稿時にページが真っ白になる。
  • MU用の自作プラグインを有効にすると「重大なエラーが発生しました」と言われる。
  • 「オプション」→「設定を更新」を実行すると<footer>から後のHTMLだけが返ってくる。

おそらくもっと使えばこれ以外にも不具合が出てくると思います。はっきりといって使いものになりません。Dreamhostでは問題ないのに、何故こんなにも違いがあるのだろうと戸惑いましたがインストールしなければいけない状況だったので、もう一度ソースから問題を探っていきました。

…長いことソースを追った結果「PHPのネイティブ関数 header(”Location: ~”); が機能していない」という事実を突き止めました。試しに wp-comments-post.php を次のように置き換えてコメントを投稿しても画面は真っ白です。

<?php
require( dirname(__FILE__) . ‘/wp-config.php’ );
header(”Location: “http://www.google.com”);
?>

WordPressMUで追加された wp-config.php から呼び出されるコードの中に間違えて空白や空行を出力している箇所があるのでしょう…。では何故DreamHostでは正常に動いているのかというとPHPのバッファの設定の問題でした。
output_bufferingを有効にしてやれば良いのです。output_bufferingとheader関数の関係はここに詳しく書いてあります。HTMLとして出力する文字列はバッファに貯めておいて、コードの後半でheader()関数を使っても先にヘッダとして出力できるようにしてやります。

インストールディレクトリの.htaccessに次の行を追加しました。ついでに今後も不具合が発生するかもしれないので、念のためにエラーメッセージを表示させるようにして様子を見てみようと思います。

php_flag output_buffering On
php_flag display_errors On

この原因を修正するだけで、一見関係なさそうな他の問題も一気に解決しました。間接的に関係していたのでしょうか?

WordPressMUは使用しているユーザの絶対数が少ないですし(特に日本では)実績も少ないです。日本でまともに運用しようと思うならかなり覚悟が必要な気がします。

追記

不特定多数のユーザからの自動ブログ登録を無効にするオプションてないみたい。自分でwp-signup.php を無効にするように中身を書き換えてやる必要がありました。

2007/5/1 火曜日

WordPressMeのメール投稿機能日本語対策

Filed under: WordPress — ishiro @ 4:03:00

WordPressMe2.1.3を使ってメールによる投稿の設定を行った。日本語化ける…。日本語版なのに何故…(; ;) 仕方ないので自分でコードを修正しました。

wp-mail.php のパッチは次の通り。

$ diff wp-mail-org.php wp-mail.php
106c106,107
<
---
> $subject = mb_convert_encoding(mb_decode_mimeheader($subject), ‘UTF-8′);
>
122c123,124
<
---
> $content = mb_convert_encoding($content, ‘UTF-8′, ‘auto’);
>

ところが使っていると写真添付には対応していないことが判明。これでは使えない。写真添付を使わない人なら上記だけでも良いのですが。

探してみると便利なプラグインがありました。

wp-shot

日本語にも完全に対応しているし画像の投稿も可能です。うん、これは良い。これを使いましょう。

2007/4/4 水曜日

Movable Typeのテーマ変更

Filed under: WordPress — ishiro @ 7:21:31

すっかりWordPressがお気に入りなのですが、必要があってMovableTypeでテーマデザインを変更する方法を調べてみました。バージョンは現時点で最新3.34-jaです。

昔と違ってStyleCatcherプラグインを使えばWordPressのようにクリック一つでデザインを変更できるように変わっていました。便利なので喜ばしいことです。新規にインストールした時のために一応メモ。

システムでStyleCatcherを使えるようにする方法は次の通り。

  • mt-static/配下にthemes/ディレクトリを777で作成。
  • 「メインメニュー」→「システムメニュー」→「プラグイン」で「設定を表示」をクリック。
  • 「Style LibraryへのURL:」に「http://www.sixapart.com/movabletype/styles/library」を入力。
  • 「変更を保存」をクリック

個々のブログ側でStyleCatcherを使用するには次の通り。

  • 「メインメニュー」→自分のブログ→「テンプレート」でプラグイン欄に表示されている「StyleCatcherでデザインを選ぶ」をクリック
  • 「テーマ/リポジトリへのURL:」は先ほど設定したデフォルト以外にもフリーで色々と利用できるようです。ちょっと検索しただけでも次のものが見つかりました。

    • http://stylecatcher.loftwork.com/
    • http://www.tokyobuddha.com/download/
    • http://bizcaz.com/archives/library/
    • http://www.nifty.com/biz/hosting/bhos/function/mt/stylelibrary
    • http://drblog.jp/styles/

    上記の最後のdrblog.jpはここを見てテンプレートファイルも同時に更新しないとダメなようです。

ただ、やっぱりMovableTypeよりもWordPressを強くお勧めします。インストールの簡単さ、再構築しなくても良い点、画像ファイルのアップしやすさや、商用利用でもお金がかからない、などメリットも多く設定可能な機能もWordPressの方が大きく上回ってしまいました。MovableType独自の命令セットを覚えなくてもPHPで好きに書けることもメリットになる人は多いでしょう。

MovableTypeは日本語に正式対応していて会社がサポートをしていることがメリットと感じて企業は採用しているようですが、WordPressもコミュニティが盛んなので会社からサポートを受けたいと思う機会すらないんですけどね。