ソロツーリングと気ままな旅ホームソロツーリングと気ままな旅  >  旅と気ままなフォーラム  >  XOOPS、パソコン関連  >  XOOPS関連フォーラム  >  Xoops Cube Legacyをphp7で運用する方法を模索

Xoops Cube Legacyをphp7で運用する方法を模索

  • ここでは新たな話題の追加投稿はできません。
  • ここではゲスト投稿が禁止されています

投稿ツリー




前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2022/11/16 7:09 | 最終変更
タツ  管理人   投稿数: 2266
続いて、theme_changerモジュールphp7への対応です。他に編集したモジュールと同様、Suin on PHPよりtheme_changerモジュール(theme_changer_026)をダウンロードし、ローカル環境(サーバーxampp7.4.25、legacy-2.3を起用)で一部書式変更(theme_changer/sql/mysql.sql TYPE=MyISAM; → ENGINE=MyISAM)した上でインストール)し、Fatalエラーを除去してみました。

結果的にはメニューで主要部分である「対応/編集/削除」の機能は問題なさそうですが、「グループ/ブロック管理」の部分については正常に機能しません。この部分に関してはaltsysモジュールのブロック管理と同じ機能なので、altsysモジュールのmyblocksadminをコピーしたものを編集しtheme_changerモジュールのmyblocksadminと置換し、管理メニュー(index.php)を編集することでエラーは発生しなくなりました。

■altsysモジュールのブロック管理を利用
・xoops_trust_path/lib/altsys/myblocksadminをコピーしたものを編集
42行目に挿入
// header
xoops_cp_header();

↓変更
// header
include_once( XOOPS_ROOT_PATH.'/include/cp_header.php' );
xoops_cp_header();
45行目
altsys_include_mymenu();
↓コメントアウト
//altsys_include_mymenu();
23行目
include_once __DIR__ . '/class/MyBlocksAdminForXCL21.class.php';
$myba =& MyBlocksAdminForXCL21::getInstance()

↓変更 追加
include_once XOOPS_TRUST_PATH.'/libs/'.$mytrustdirname. '/class/MyBlocksAdminForXCL21.class.php';
include_once XOOPS_ROOT_PATH .'/modules/'.$mydirname. '/language/'.$xoopsConfig['language'].'/modinfo.php';
$myba =& MyBlocksAdminForXCL21::getInstance();
14行目
require_once __DIR__ . '/class/AltsysBreadcrumbs.class.php';
require_once __DIR__ . '/include/gtickets.php';
include_once __DIR__ . '/include/altsys_functions.php';
include_once __DIR__ . '/include/mygrouppermform.php';
include_once XOOPS_ROOT_PATH . '/class/xoopsblock.php';

↓変更 追加
require '../../../mainfile.php' ;
if (! defined('XOOPS_TRUST_PATH')) {
    die('set XOOPS_TRUST_PATH in mainfile.php') ;
}
$mydirname = basename(dirname(__DIR__)) ;
$mydirpath = dirname(__DIR__) ;
// require $mydirpath.'/mytrustdirname.php' ; // set $mytrustdirname
$mytrustdirname = 'altsys' ;

//require XOOPS_TRUST_PATH.'/libs/'.$mytrustdirname.'/index.php' ;

require_once XOOPS_TRUST_PATH.'/libs/'.$mytrustdirname. '/class/AltsysBreadcrumbs.class.php';
include_once "../include/gtickets.php" ;
include_once XOOPS_TRUST_PATH.'/libs/'.$mytrustdirname. '/include/altsys_functions.php';
include_once XOOPS_TRUST_PATH.'/libs/'.$mytrustdirname. '/include/mygrouppermform.php';
include_once XOOPS_ROOT_PATH . '/class/xoopsblock.php';
以上の編集したものをhtml/modules/theme_changer/admin/myblocksadminsと置換する

■php7への対応と管理メニューの編集
・theme_changer/admin/index.php
423行目
while( list($k, $v) = each($adminmenu) )
↓変更
foreach ($adminmenu as $k => $v)
48行目
//Gチケットシステム呼び出し
include_once( XOOPS_ROOT_PATH.'/modules/'.$mydirname.'/include/gtickets.php' );

↓変更と追加
// Assign to template for Admin Breadcrumbs
$dirname = ucfirst( $mydirname );

//Gチケットシステム呼び出し
include_once( XOOPS_ROOT_PATH.'/modules/'.$mydirname.'/include/gtickets.php' );

// display
require_once XOOPS_TRUST_PATH . '/libs/altsys/class/D3Tpl.class.php';
$tpl = new D3Tpl();
$tpl->assign(
    [
        'adminmenu' => $adminmenu,
        'dirname'   => $dirname,
    ]
);
53,180,204,255,326,369,381,418行目
xoops_cp_header();
↓変更
xoops_cp_header();
$tpl->display( 'db:altsys_inc_menu.html' );

■言語ファイルの作成
運用されている文字コードja_utf8のフォルダがないので
theme_changer/languege/japaneseのフォルダをコピーし、
名前をja_utf8に変更して追加

■mysqlファイルの編集
・theme_changer/sql/mysql
TYPE=MyISAM
↓変更
ENGINE=MyISAM

以上で今の所正常に動作しているようです。不具合があれば削除または追加で対応したいと思います。

投票数:4 平均点:5.00

前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2022/11/19 19:30 | 最終変更
タツ  管理人   投稿数: 2266
続いて、logcounterxモジュールphp7への対応です。他に編集したモジュールと同様、xoops.taquino.netさんのサイトよりlogcounterxジュール(バージョン2.74)をダウンロードし、JJ1RLWのXOOPS Cube Siteさんのサイトを参考に編集しました。

JJ1RLWのXOOPS Cube Siteさんのサイトから
引用:
logcounterx Ver 2.74のUTF-8、MySQL、PHP7対応

XOOPS Cubeで使っているモジュールのlogcounterx Ver 2.74のUTF-8、MySQL、PHP7対応するため、お得意の「ちょっとだけ改造」をしています。

eregi系関数が非推奨なった事への対応
admin/myblockform.php
admin/uaos.php
include/functions.php
eregi()をpreg_match()にすべて変更する。


eregi( "MSIE[^;]*" , $browser , $msie )

preg_match( '/MSIE[^;]*/i' , $browser , $msie )
に変更。


xpressを導入してWordPressを使うとにUTCとなることへの対応で、UTCからJSTを使う様に
blocks/count_up.php
56行目
date_default_timezone_set("Asia/Tokyo");
を追加。

eregi系関数が非推奨なった事への対応
98行目
if (eregi('Robot', lcx_ua2br($UserAgent))) {

if (preg_match('/Robot/i', lcx_ua2br($UserAgent))) {
に変更。

リモートアドレスが更新されない問題への対応
130-131行目
if (($RemoteAddr == $RemoteHost) && ($CONF['USE_GET_HOST'])) { $RemoteHost = gethostbyaddr($RemoteAddr); $slashedRH = addslashes($RemoteHost); } else { $slashedRH = ''; }
if ((trim($HttpReferer) != '') && !preg_match('/^(http:\/\/|https:\/\/|ftp:\/\/)/', trim($HttpReferer))) {

if (($RemoteAddr == $RemoteHost) && ($CONF['USE_GET_HOST'])) { $RemoteHost = gethostbyaddr($RemoteAddr); } else { $slashedRH = ''; }
if ((trim($HttpReferer) != '') && !preg_match('/^(http:\/\/|https:\/\/|ftp:\/\/)/i', trim($HttpReferer))) {
に変更。

137行目
$sql = "INSERT INTO ".$xoopsDB->prefix("logcounterx_log").
" (remote_host, user_agent, path_info, referer, acccnt, uname, accday, acctime, accwday)" .
" VALUES " .
" ('$slashedRH', '".addslashes($UserAgent)."', '".addslashes($PathInfo)."',".

$slashedRemoteAddr = addslashes($RemoteAddr);
$slashedRemoteHost = addslashes($RemoteHost);
$sql = "INSERT INTO ".$xoopsDB->prefix("logcounterx_log").
" (remote_host, user_agent, rh_short, path_info, referer, acccnt, uname, accday, acctime, accwday)" .
" VALUES " .
" ('$slashedRemoteAddr', '".addslashes($UserAgent)."', '$slashedRemoteHost', '".addslashes($PathInfo)."',".
に変更。

xpressを導入してWordPressを使うとにUTCとなることへの対応で、UTCからJSTを使う様に
blocks/display.php
16行目
date_default_timezone_set("Asia/Tokyo");
を追加。

include/functions.php
解析できるOSを追加
19行目
if (eregi('Windows NT 5\.1', $agent) || eregi('WinNT 5\.1', $agent)) { return 'WinXP'; }
if (eregi('Windows NT 6\.0', $agent) || eregi('WinNT 6\.0', $agent)) { return 'WinVista'; }
if (eregi('Windows NT 6\.1', $agent) || eregi('WinNT 6\.1', $agent)) { return 'Windows7'; }
if (eregi('Windows NT', $agent) || eregi('WinNT', $agent)) { return 'WinNT'; }

if (preg_match('/Windows NT 5\.1/i',$agent) || preg_match('/WinNT 5\.1/i',$agent)) { return 'WinXP'; }
if (preg_match('/Windows NT 5\.2/i',$agent) || preg_match('/WinNT 5\.2/i',$agent)) { return 'Win2003'; }
if (preg_match('/Windows NT 6\.0/i',$agent) || preg_match('/WinNT 6\.0/i',$agent)) { return 'WinVista'; }
if (preg_match('/Windows NT 6\.1/i',$agent) || preg_match('/WinNT 6\.1/i',$agent)) { return 'Windows7'; }
if (preg_match('/Windows NT 6\.2/i',$agent) || preg_match('/WinNT 6\.2/i',$agent)) { return 'Windows8'; }
if (preg_match('/Windows NT 6\.3/i',$agent) || preg_match('/WinNT 6\.3/i',$agent)) { return 'Windows8.1'; }
if (preg_match('/Windows NT 10/i',$agent) || preg_match('/WinNT 10/i',$agent)) { return 'Windows10'; }
if (preg_match('/Windows NT/i',$agent) || preg_match('/WinNT/i',$agent)) { return 'WinNT'; }
に変更。

280行目
" ref_query = '$Query', rh_short = '$RHShort', ref_short = '$RefShort'," .

" ref_query = '$Query', ref_short = '$RefShort'," .
に変更。

UTF-8への対応?
index.php
7行目
if (!defined('_CHARSET')) { define('_CHARSET', 'EUC-JP'); }

if (!defined('_CHARSET')) { define('_CHARSET', 'UTF-8'); }
に変更。

sql/mysql.sql
) TYPE = MyISAM;

) ENGINE = MyISAM;
にすべて変更。

user_agentの長さが不足してエラーとなる事への対応
36行目
user_agent varchar(150) NOT NULL default '',

user_agent varchar(250) NOT NULL default '',
に変更。

以上、「ちょっとだけ改造」でした。..(^_^;
※2016/05/17 OSを解析する部分を追加訂正しました。
最終更新:2018/07/31

さらに、
■eregの対応
・logcounterx/index.php
257,282行目
if (($Data['RowName'] == 'unknown') || ereg('\+\+\+\+\+\+\+\+\+\+',$Data['RowName'])) { continue; }
↓変更
if (($Data['RowName'] == 'unknown') || preg_match('/\+\+\+\+\+\+\+\+\+\+/',$Data['RowName'])) { continue; }

■ログの再構築の際のエラー表示の解消
・include/function.php
257行目
if (preg_match('/Slurp\.so/Goo/i',	$agent)) { return 'Robot (goo)'; }
↓変更
if (preg_match('<Slurp\.so/Goo>i',	$agent)) { return 'Robot (goo)'; }

モジュールインストールの際
sql/mysql.sqlで
TYPE = MyISAM; →  ENGINE = MyISAM;としましたがインストールに失敗したので
TYPE = MyISAM; →  ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;とすればOKでした。

これで、インストール後logcounterxモジュールのデータベースを移行しテストしました。今のところ検索リストが表示されない以外は正常なようです。
投票数:4 平均点:5.00

前の投稿 - 次の投稿 | 親投稿 - 子投稿なし | 投稿日時 2022/11/29 5:51
タツ  管理人   投稿数: 2266
captchaモジュールは登録の際、画像認証をするためのモジュールです。このサイトもcaptchaモジュールを利用しています。さて、でXoopsXより最新のcaptchaモジュールversion0.22をローカル環境(サーバーxampp7.4.25、legacy-2.3を起用)にインストールし各ファイルを以下のように編集してみました。

■1.PHP7へのバージョンアップによる書式変更(__construct部分等)
・captcha/class/captcha_x/class.captcha_x.php
104行目
function captcha_x () {
↓変更
function __construct() {
・captcha/class/captcha_api.php
33行目
function captcha_api()
↓変更
function __construct()

■2.PHP7での配列書式変更
変更対象ファイル
例)$name = array()
変更↓
$name = ;

今の所うまく動作しているようです。
投票数:2 平均点:5.00

  条件検索へ


旅と気ままなフォーラム新着投稿

旅と気ままなフォーラムメニュー

欲しい商品が必ず見つかるメジャーなネットショップ

このサイト内の検索

オンライン状況

18 人のユーザが現在オンラインです。 (1 人のユーザが 旅と気ままなフォーラム を参照しています。)

登録ユーザ: 0
ゲスト: 18

もっと...

Facebook,RSSリンク表示


RSSicon 最新記事のRSS