PHP7対応手順。XOOPSの場合はここだよ

XOOPS XOOPS

レンタルサーバーのPHPアップデート。十数年前に契約したサーバーだとバージョン「5.3」とかけっこうあって、最近立て続けにバージョン「7」へリプレイスされました。

運用サイトがWordpressの場合は問題ないんだけども、XOOPS(ズープス)だとずいぶん手を入れないといけない。このたび顧客のサイトでけっこうな数をこなしましたので、XOOPSのPHP7対応作業をまとめてみました。やる前は(うわ~こりゃかなりめんどうそうだなぁ・・・)と思っていたけど、いざやってみたらけっこういけました。なので備忘録。これからやる人はよかったら参考にしてください。

ローカル環境を用意

まずはPHP7のローカル環境を用意して、そこでトライしてみてね。PHPデバッグでもエラー文がまったく出ない場合があり、そのうえ真っ白画面が多発します。いきなり本番サーバーでやると死にますw

1、htaccess

Filezilla

もし、htaccessファイルに転送の記述をしていたらまずは一旦全削除しておこう。

2、mainfile.php

FileZilla

mainfile.phpファイル、以下2箇所を次のように変更。

define('XOOPS_DB_TYPE', 'mysql');
define('XOOPS_DB_TYPE', 'mysqli');

「mysql」

「mysqli」

※「i」を付けてあげてください。

define('XOOPS_DB_HOST', 'localhost');
define('XOOPS_DB_HOST', 'localhost:3306');

「localhost」

「localhost:3306」

3、XOOPSコア上書き

XoopsXの最新版をgithubからダウンロードしてきて上書き。このとき以下ファイルは上書きしないようにね。

フォルダ
「favicon.ico」と「mainfile.php」は上書きしない。

4、モジュールアップデート

サイトによって使用しているモジュールはそれぞれ。実際に井元がアップデートしたモジュールとそのバージョンを明記しておきます。

  • bulletin 3.03.0
  • d3blog 2.0802
  • d3forum 0.89.5
  • happylinux 1.82
  • multiMenu 1.24.1
  • myalbum 2.89.3
  • pico 1.87.11
  • weblinks 2.12
  • xwiords 0.47.4

【d3blog 2.0802】真っ白

真っ白になるので、以下ファイルに手を入れる。

「xoops_trust_path/modules/d3blog/include/filter/EntryFilter.class.php on line 71」あたりの「break;」を削除

if($length != strlen($date) || empty($date) || !checkdate(isset($matches[2])? intval($matches[2]) : 1, isset($matches[3])? intval($matches[3]) : 1, intval($matches[1]))) {
    $this->addError(sprintf(_MD_D3BLOG_ERROR_DATE_FORMAT_ILLEGAL, $myts->htmlSpecialChars($this->date_)));
    return false;
    break;
}

【pico】プラグインの置き換え

picoモジュールの「pico_listプラグイン」が動かなかったので、全部「xugj_block」に置き換えました。

【preload】ディレクトリ内

まだ真っ白になる場合はpreload内ファイルが原因かも。

FileZilla

TOKYOPenで構築していた場合。「/preload/APenginPath.class.php」を削除。

そのほか

「/preload/HypCommonPreLoad.class.php」
「/preload/OutModuleHelper.class.php」

ファイルがあったらこれも削除。

モジュールアップデートで真っ白

モジュールアップデートの際に真っ白になるときがありました。

ちょっと時間をおいてリロードしたら正常に動作しました。(原因はちょっとわかりませんでしたが・・・)

PHP7動作不可

どうやっても正常に動かなかったモジュール・・・。井元の手には負えず、残念無念、アンインストールです。

  • attachfile
  • cubeUtils
  • d3pipes
  • piCal
  • picocal
  • pm
  • xmobile

トラブル

次のようなトラブルが出たら。

エラーメッセージ「You have accessed too many times while short term」

エラーメッセージ「You have accessed too many times while short term」が出たら。

protectorモジュール

protectorモジュールの「一般設定」-「このサイトで有効にするフィルター」の「crawler_overrun_message.php」行を削除してください。

本番サーバーへ

ローカル環境で正常動作するのを確認したら、いよいよ本番サーバーへ。作業する前に、バックアップは必須ね。

お疲れ様でした~。自分でやってみて、どうしてもうまくいかなかったら弊工房までご依頼くださいな♪

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