DrupalなるCMSがあることを知り、動かしてみることにした。
- 日本語サイトがあるので(上記リンク参照)、そこへいきtgzファイルとJamailモジュールを落として解凍し、丸ごとサーバに上げる。
- ./sites/default/ディレクトリ以下のフォルダのパーミッションを777に、./sites/default/settings.phpのパーミッションを666に。
- Drupal専用のデータベースをMySQL上に作成しておく。
- index.phpを実行、DBアカウントなどを指定してinit終了。
- ./sites/default/ディレクトリ以下のフォルダのパーミッションと、./sites/default/settings.phpのパーミッションを元に戻す。
で、この方法で、上記のページが表示されるようになったのだが、管理セクションに進もうとすると、真っ白な画面になってしまった。
error_logを調べたところ、
PHP Fatal error: Call to undefined function: array_intersect_key() in /*******/drupal/modules/update/update.compare.inc on line 695
などとなっていた。array_intersect_key()というのは、PHP5.1以降に追加された関数だということがわかった。Drupal本家のページに回避方法が書いてあった。
modules/update/update.compare.inc
<?php 'info' => update_filter_project_info($file->info), ?>
を
<?php 'info' => $file->info, ?>
に書き換えたところ解決した。
ついでに、
PHP Notice: Use of undefined constant PHP_INT_MAX - assumed 'PHP_INT_MAX' in /******/includes/database.inc on line 213
というエラーについても調べたところ、これはDrupalのバグらしく、PHP4.3.10/5.0.5以前のバージョンで起きるようだ(私のサーバは4.3.9)。これについても、./includes/database.incの冒頭に
<?php function get_int_max() { $max=0x7fff; $probe = 0x7fffffff; while ($max == ($probe>>16)) { $max = $probe; $probe = ($probe << 16) + 0xffff; } return $max; } if (!defined('PHP_INT_MAX')) { define ('PHP_INT_MAX', get_int_max()); } define ('PHP_INT_MIN', (int)(PHP_INT_MAX+1)); ?>
のコードを追加することでエラーは出なくなった。私はPHPに詳しくないので、これでいいのか自信がない。
どこまでのことができるかはこれからいろいろと試してみる予定。