印刷用表示へ切り替え 通常表示へ切り替え 更新履歴を表示 更新履歴を隠す
Linux PhpTiddlyWiki を動かすとブログが真っ白に

PhpTiddlyWiki をサーバにインストールして,動作するように PHP の設定を変更すると,こんどはブログのサイトが真っ白になってしまった。xml 宣言が PHP のタグとして解釈されたからだった。

■ ■ ■

GTD 用の Wiki である GTDTiddlyWiki は便利だが,ファイルはローカルのマシンに保存される。これだと,GTD 管理マシンを1台に限定するか,終了時に Wiki 本体をサーバにアップロードし開始時にダウンロードするか,どちらかの方法をとる必要がある。そうなると,データはサーバに保存したい。PhpGTDTiddlyWiki を使ってみたいが,残念ながらダウンロードファイルが見つからない。とは言っても,

PhpGTDTiddlyWiki = TiddlyWiki + PhpTiddlyWiki + GTDTiddlyWiki

とあるので,まずはサーバサイドで動作する PhpTiddlyWiki をインストールして動作確認をするのが先決。オフライン版本家のサイト TiddlyWiki も PhpTiddlyWiki を使っている。

環境は,Vine Linux 3.2, Apache 1.3.33, PHP 5.1.2 である。インストール手順は以下の通り。

  1. PhpTiddlyWiki にアクセスし,Download Code から最新版(0.4b)をダウンロード
  2. サーバ上で展開
  3. 展開されたファイルにある tiddly_readme.html にしたがってインストール
  4. MySQL にデータベースを作成 (データベース名,ユーザ名,パスワードを指定)
  5. /etc/php.ini を編集し,register_globals の値を On に変更
  6. tiddly_conf.php をサイトに合わせて編集
  7. tiddly_install.php にブラウザでアクセス (データベースが構築される)
  8. tiddly_install.php を削除

ここで問題発生。tiddly_install.php にブラウザでアクセスすると,ブラウザに PHP のスクリプトが表示されてしまう。PhpTiddlyWiki の PHP スクリプトは短縮型の開始タグを使っているからである。PHP の開始タグについては,PHP: 基本的な構文 - Manual に解説がある。対策は次の二者択一。

  • PhpTiddlyWiki のコードを変更する
  • PHP の設定を変更する

PhpTiddlyWiki のコードの修正方針は,「<? ... ?>」は「<?php ... ?>」に,「<?= ... ?>」は「「<?php echo ... ?>」にすることである。しかし量が多すぎ。

そこで,PHP の設定を変更し,「<? ... ?>」を PHP のスクリプトとして解釈できるようにすることにした。/etc/php.ini を編集し,short_open_tag ディレクティブの設定値を変更する。

; short_open_tag = Off (コメントアウト)
short_open_tag = On

そして,httpd をリスタートすると PhpTiddlyWiki が動作するようになった。やれやれ。

ここで問題発生。あれれ? ブログのサイトにアクセスすると,何も表示されない。ブラウザではエラーになっていない。内容がないのである。「内容がないよう」なんて言っている場合ではない。トップページだけではなく,全てのページが真っ白に表示されるようになってしまったのだ。原因は,各ページの最初の xml 宣言であった。

<?xml version="1.0" encoding="EUC-JP"?>

PHP で短縮型の開始タグの使用を許可したばかりに,<?xml ...?> が PHP のスクリプトだと解釈されたためである。しかも,xml などという関数はないので,PHP としてはエラーになる。サーバは正直なので,ページにはめでたく何も表示しなくなったのである。

ではどうするか? 短縮型開始タグを許可し,xml 宣言を

<?php echo('<?xml version="1.0" encoding="EUC-JP"?'.'>'); ?>

のように書いてしまうという方法が考えられる。しかし,これは本末転倒という気がする。やはり PhpTiddlyWiki のコードを書き直すべきだ。さらに,/etc/php.ini で 「register_globals = Off」の設定を「On」にしなければならず,これはセキュリティ的に問題が起きやすいとされている。PhpTiddlyWiki の利用は当分お預けだ。

Posted by n at 2006-06-07 00:09 | Edit | Comments (2) | Trackback(0)
Trackbacks

  • 「手違いで複数トラックバックを送ってしまった!」という場合でも気にしないでください (重複分はこちらで勝手に削除させていただきます)
  • タイムアウトエラーは,こちらのサーバの処理能力不足が原因です (詳細は トラックバック送信時のエラー をご覧ください)
  • トラックバックする記事には,この記事へのリンクを含めてください(詳細は 迷惑トラックバック対策 をご覧ください)
Comments

PhpTiddlyWiki のコードを書き直すのは、記事を見る限りそれ程大変ではないように思います。
1. '<?' を '<?php' に全て置き換える
2. '<?php=' を '<?php echo ' に置き換える

Posted by: kirin_3 at June 07, 2006 19:27

なるほどそうですねぇ。気がつきませんでした。

Posted by: n at June 07, 2006 22:57
Post a comment
  • 電子メールアドレスは必須ですが,表示されません (気になる場合は「メールアドレスのような」文字列でもOKです)
  • URL を入力した場合はリンクが張られます
  • コメント欄内ではタグは使えません
  • コメント欄内に URL を記入した場合は自動的にリンクに変換されます
  • コメント欄内の改行はそのまま改行となります
  • 「Confirmation Code」に表示されている数字を入力してください (迷惑コメント対策です)


(必須, 表示されます)


(必須, 表示されません)


(任意, リンクされます)


Confirmation Code (必須)


Remember info (R)?