PHP4.4+MySQL4.0にWordPressを入れマルチサイト化

無料レンタルサーバは最新の状態とは限らないどころか、なかなか厳しい環境になることが多い。
個人裁量も多く早々更新されない…むしろ更新を期待してはいけない…。
だから無料なのだ。無料にはいつも理由があるのだ。
自動で広告貼っているんだから、ユーザいなくなっても困ると思うのだけどね…
そんな厳しい環境でも入れなきゃいけないときってあるのです。

今回はPHP4.4+MySQL4.0という100MBサーバにWordpressを入れマルチサイト化します。
PHP5.2って説明ページに書いてるのに!くそう!

入れるwordpressを考える

公式により『PHP 4 と MySQL 4 のサポート停止のご案内』により2010年7月30日までは対応されているということになる。

つまりwordpress3.2まではPHP4とMySQL4を対応していると見る。
細かく見ると下記のイメージ。

  • WordPress2.5~3.2 : PHPバージョン4.3以上
  • WordPress2.1~2.3 : PHPバージョン4.2以上
  • WordPress2.9~3.2 : MySQLバージョン4.1.2
  • WordPress2.1~2.8 : MySQLバージョン4.0以上

※3.2からは、PHP5.2以上、MySQL 5.0.15以上が条件になった。
※3.0からマルチサイト機能対応。その前にも似た機能はあるらしい。
いつか対応バージョン一覧作りたいと思いながら、数年経過した。誰か作ってないかな
文字コードやらINSERTやらの問題が出て戦いたくないなら、バージョンを前のものに見直すことを薦める。

今回はPHP4.4+MySQL4.0なので、2.8系が限界となる。

因みに自分が試したwordpress2.8.6では管理画面でダッシュボードが上手く動かなかった。
しかし『/wp-admin/index.php』の『wp_dashboard();』をコメントアウトしておけばあとは問題ない。

因みに今回は『マルチサイト機能』を使いたいので、Wordpress3.0以上にする。
調べ損である。

wordpressを入れる

公式の過去バージョン一覧の中から『3.0.6』を落とす
日本語 « リリース — WordPress

本来動かないバージョンなので、そこから色々書き換える必要がある。

ありがたいことに同じことをしている人がいた。
WordPress3.0をmysql4.0にインストールした。 - FlipClap

wp-admin/install.php

$php_compat     = version_compare( $php_version, $required_php_version, '>=' );
$mysql_compat   = version_compare( $mysql_version, $required_mysql_version, '>=' ) || file_exists( WP_CONTENT_DIR . '/db.php' );

  ↓

$php_compat     = true;
$mysql_compat   = true;

wp-includes/wp-db.php

function check_database_version() {
    global $wp_version, $required_mysql_version;
    // Make sure the server has the required MySQL version
    if ( version_compare($this->db_version(), $required_mysql_version, '<') )
        return new WP_Error('database_version', sprintf( __( '<strong>ERROR</strong>: WordPress %1$s requires MySQL %2$s or higher' ), $wp_version, $required_mysql_version ));
}

  ↓

function check_database_version() {
    return;
}

wp-admin/includes/schema.php

if ( ! empty($wpdb->charset) )
    $charset_collate = "DEFAULT CHARACTER SET $wpdb->charset";
if ( ! empty($wpdb->collate) )
    $charset_collate .= " COLLATE $wpdb->collate";

  ↓

if ( ! empty($wpdb->charset) )
    $charset_collate = '';
if ( ! empty($wpdb->collate) )
    $charset_collate = '';

wp-includes/functions.php

$result = $wpdb->query( $wpdb->prepare( "INSERT INTO `$wpdb->options` (`option_name`, `option_value`, `autoload`) VALUES (%s, %s, %s) ON DUPLICATE KEY UPDATE `option_name` = VALUES(`option_name`), `option_value` = VALUES(`option_value`), `autoload` = VALUES(`autoload`)", $option, $value, $autoload ) );

  ↓

if ($wpdb->get_row($wpdb->prepare("SELECT * FROM `$wpdb->options` WHERE `option_name` = %s", $option))) {
    $result = $wpdb->query( $wpdb->prepare( "UPDATE `$wpdb->options` SET `option_value` = %s, `autoload` = %s WHERE `option_name` = %s", $value, $autoload, $option ) );
} else {
    $result = $wpdb->query( $wpdb->prepare( "INSERT INTO `$wpdb->options` (`option_name`, `option_value`, `autoload`) VALUES (%s, %s, %s)", $option, $value, $autoload ) );
}

インストール

あとはいつもどおり『wp-settings.php』にブラウザアクセスし『wp-config.php』を作る流れ。

出来た『wp-config.php』ファイルに容量節約のために余計に保存しない設定を追記しておく。

define('AUTOSAVE_INTERVAL', 43200 );
define('WP_POST_REVISIONS', false);

管理画面からの投稿が文字化けする場合

文字化けれされも、バージョンが低いせいで文字コードの指定がどうにもならぬ。
なので、投稿時に送り込む文字の方をどうにかする。

『.htaccess』に下記を追加。

AddDefaultCharset UTF-8
php_value default_charset UTF-8
php_value mbstring.language Japanese
php_value mbstring.internal_encoding UTF-8
php_flag  mbstring.encoding_translation On
php_value mbstring.http_input auto
php_value mbstring.http_output pass

マルチサイト化する

ここからはマルチサイト化する設定。

wp-config.phpに追記

define('WP_ALLOW_MULTISITE', true);

ログインし直して増えたメニューで何やかんやする。

設定内容は違うがここが参照になった。
WordPressマルチサイトのメリット・デメリット・設定方法 | 株式会社ベクトル | 名古屋でWordPressを活用したウェブ制作・システム開発

【補足】使えないプラグイン

PHP4だから使えないものもある。

PDO (SQLite) For WordPress

これは『SQLite対応する』ために『PDOを使う』プラグイン。
『PHP4はPDO使えない』ので、適用するとMySQLも使えなくなる。

Ktai Style (携帯対応プラグイン)

日本のガラパゴス携帯(ガラケー)に対応するためのプラグイン。PHP5が基本の様子。
代わりにMobile Eye+(Mobile Eye+ パッチ)を使う。
※2010年頃はガラケー対応をしていた。2015年以降はもう要らない。

コメント

タイトルとURLをコピーしました