データベースzelkova_usersの作成に失敗しました。

ある程度動くようになってきたが,管理者パスワードを忘れてしまったのでXOOPSにログインすることができない.多分XOOPSを再インストールしてやればこの状態からは脱出できると思われるが,その前にサイトの配置を少し変更しておくことにしよう.localhostでアクセスするパスをD:\Webとし,この直下にXOOPS2.2/htmlの中身を置くという構成にしてみる.いや,それよりXOOPS2.2/htmlをapacheのドキュメントルートにするという方が早い.⇒http://localhostでXOOPSが起動されるようになったが,ただいまメンテナンス中の画面から中に入れない.「XOOPS Cube Legacy のインストール方法」の説明ではこの設定でlocalhostにアクセスすると自動的にインストールウィザードが開くとなっているのだが…adminのパスワードを強制的に空にしてみよう.⇒ダメだ.もう一度インストールし直すしかなさそうだ.インストールウィザードを開けた.

image

Deprecated: Function get_magic_quotes_gpc() is deprecated in D:\XOOPS2\html\install\class\textsanitizer.php on line 86
Deprecated: Function get_magic_quotes_gpc() is deprecated in D:\XOOPS2\html\install\class\textsanitizer.php on line 86
Deprecated: Function get_magic_quotes_gpc() is deprecated in D:\XOOPS2\html\install\class\textsanitizer.php on line 86
Deprecated: Function get_magic_quotes_gpc() is deprecated in D:\XOOPS2\html\install\class\textsanitizer.php on line 86

image

Deprecated: Function get_magic_quotes_gpc() is deprecated in D:\XOOPS2\html\install\class\textsanitizer.php on line 86
Deprecated: Function get_magic_quotes_gpc() is deprecated in D:\XOOPS2\html\install\class\textsanitizer.php on line 86
Deprecated: Function get_magic_quotes_gpc() is deprecated in D:\XOOPS2\html\install\class\textsanitizer.php on line 86

image

Deprecated: Function get_magic_quotes_gpc() is deprecated in D:\XOOPS2\html\install\class\textsanitizer.php on line 86

image

データベースは存在していてもよいようだが,テーブルが存在するとこの画面から前に進めないようだ.データベースを丸ごとドロップした.

image

ユーザテーブルの作成に失敗している.この後管理者の登録を実施するので登録ゼロで失敗とも考えられるが,説明文では✗にはなっていない.管理者ユーザを登録したがレコードの挿入に失敗している.もう一度作り直してみよう.ユーザテーブルは保存しておいたが,エラーになっている.

<b>Fatal error</b>:  Uncaught TypeError: mb_detect_encoding() expects parameter 1 to be string, bool given in C:\xampp\phpMyAdmin\libraries\classes\Util.php:1620
Stack trace:
#0 C:\xampp\phpMyAdmin\libraries\classes\Util.php(1620): mb_detect_encoding(false, ‘UTF-8’, true)
#1 C:\xampp\phpMyAdmin\libraries\classes\Plugins\Export\ExportSql.php(725): PhpMyAdmin\Util::localisedDate()
#2 C:\xampp\phpMyAdmin\export.php(444): PhpMyAdmin\Plugins\Export\ExportSql-&gt;exportHeader()
#3 {main}
  thrown in <b>C:\xampp\phpMyAdmin\libraries\classes\Util.php</b> on line <b>1620</b><br />

ダメだ.本体のエクスポートでも失敗している.これはかなりまずいことになった.エクスポートが使えなかったら何の役にも立たない.問題は

Uncaught TypeError: mb_detect_encoding() expects parameter 1 to be string, bool given in C:\xampp\phpMyAdmin\libraries\classes\Util.php:1620

というところだ.ネットで検索すると

phpMyAdmin5.0.1の「状態」タブがFatal Errorで表示されないバグ
https://crieit.net/posts/phpMyAdmin5-0-1-Fatal-Error

という情報があり,似たような状況で暫定対処策を提案していたのでそれに従って,「とりあえず日本語ユーザーができる仮対応としては、

C:\xampp\phpMyAdmin\libraries\classes\Util.phpの1617行目を

$ret = strftime(‘%Y-%B-%d %H:%M’, (int) $timestamp);

に書き換えることで閲覧できるようになる――のような修正を行った.これでエクスポートは問題なくできるようになった.もしかするとこれで問題解決している可能性もあるので,もう一度データベースを組み直してみよう.ダメだ.やはりユーザテーブルは作られていない.

「サイト管理者についての設定」画面のところで「実行」する前にオリジナルのSQLをインポートしてみよう.ダメだ.読み込めない.「#1007 – データベース ‘oa00090878_babalabo’ を作成できません。データベースはすでに存在します。」で無動作になってしまっている.テーブルだけを書き換えるようにすればよいのだが,このファイルは大き過ぎてNoEditorで編集することができない.どうすればよいか?一度データベースをドロップしてみよう.⇒オリジナルをインポートしてユーザテーブルからadminを落とした上で管理者登録を実行してみる.⇒どうやら失敗したようだ.

image

この操作はかなり無理があるとは思われるが…一番の問題はインストールウィザードでユーザテーブルが作れないという点ではないだろうか?もう一度やり直してみよう.

NG データベースzelkova_usersの作成に失敗しました。

どのようなエラーが起きているのかは何も情報がないので分からない.管理者登録を実行すると,下記のエラーが出る.

NG 1個のデータをデータベースzelkova_usersにインサートすることに失敗しました。

それ以外にはエラーは発生していない.エラーを無視して進むと

Warning: Cannot modify header information – headers already sent by (output started at D:\XOOPS2\html\core\XCube_Service.class.php:121) in D:\XOOPS2\html\install\wizards\install_nextStep.inc.php on line 11

の警告を出して行き止まりになる.legacy-r2_2_02というのをダウンロードしてみた.これは XOOPS Cube のコアと思われる.動作は同じかもしれないが…これは本家版で英語しかサポートしていない.Confirm database settings 画面から次に遷移するところで以下のようなエラーになった.

Fatal error: Uncaught Error: Call to undefined function mysql_connect() in D:\XOOPS2\html\class\database\mysqldatabase.php:86 Stack trace: #0 D:\XOOPS2\html\install\class\dbmanager.php(51): XoopsMySQLDatabase->connect(false) #1 D:\XOOPS2\html\install\class\dbmanager.php(62): db_manager->connectDB(false) #2 D:\XOOPS2\html\install\wizards\install_checkDB.inc.php(14): db_manager->isConnectable() #3 D:\XOOPS2\html\install\index.php(100): include(‘D:\\XOOPS2\\html\\…’) #4 {main} thrown in D:\XOOPS2\html\class\database\mysqldatabase.php on line 86

このエラーはバージョンの問題と考えられるが,以下のような情報があった.

PHP7で、mysql_connect()が無いと怒られる件 (undefined function mysql_connect)
https://qiita.com/okamoto0/items/a2568133064b74f837bb

解決策としては,①mysql_系関数を mysqli_系関数に書き換える:mysql_connectをmysqli_connectに変える.②古いモジュールを使用する(php-mysqlを入れる等)としている.これは結局現在使っているxamppがまだ少し古いということを意味しているように思われる.いや,その逆かもしれない.mysql_connectを呼び出しているのはXOOPSの方だから,XOOPSの方が古いということになる.確かにそのようだ.どうすればよいか?

この記事ではPHP7でこのような事象が起きるとしているので古いxamppを使えば解決しそうに思われるが,問題はロリポでどのバージョンを使っているのか?という点だ.ロリポで使えるのは3種あるが,PHP7.1(CGI版),PHP7.3(CGI版),PHP7.3(モジュール版)でいずれも7以上だ.つまり,仮にローカルで動かせるようになったとしてもリモートには持ち出せないということになってしまう.そうなると,XOOPSのもっと新しい版があるのか否か?という話になってくる.

mysqli_connect という関数は現在の環境でも存在するようなので,まずソースを修正してみることにしよう.mysql_connectという関数の出現は1,2箇所と見られるがそれだけでは済まない.おそらく,mysql_xxxという関数セットをすべてmysqli_xxxに書き換える必要があるように思われる.30箇所くらいあるが,ほとんどはmysqldatabase.phpの中だ.それ以外ではmysql_real_escape_stringという関数が複数箇所で使われているがとりあえず無視しておこう.mysqldatabase.phpで17箇所置換した.⇒未定義関数エラーは発生しなくなったが,データベースに接続できない.

この版ではPHPは5.x以上,MySQLは4.4以上となっている.インストールされているxamppのPHPは7.4.2,phpMyAdminのバージョンは5.0.1だ.データベースを先に作れということなのだろうか?いや,残っていた.ドロップしてみよう.いや,同じだ.ユーザをrootに変えてみたが変化なし.日本語版ではこの問題は出ていないのだが…

image

このエラーでハマっている人も結構いるようだが,「設定の問題ではないか?」という回答しかない.エラーは出ていないが,どこかでまだmysql_connectを使っているところがあるのだろうか?どうも埒が明かないのでこの線はあきらめることにしよう.XOOPSのもっと新しい版があるかどうか探してみる.XOOPS Cubeに関するWikiの記事は2012年頃で更新が止まっている.ネットには2015年に「XOOPS CUBEの開発がついにクローズに – TSUKURU STYLE」という記事が出ている.「XOOPSの敗因は?今後繁栄するCMSは?良回答に300PT進呈します。 Ya… – 人力 …」などという記事もある.2011年頃ですでに「WordPress と Joomla! と Drupal が現在の3強」と言われていたようだ.

フォーラムなどはpicoで書いていたと思われるが,屋根裏部屋はWordPressを使っていたのではないだろうか?ただし,今のところバックアップの中にはそのような時期のものは見当たらない.つまり,かなり初期のものしか使えない状態になっている.もう一度新しいバージョンに戻って動くところまでやってみることにする.

インストール時のDBテーブル作成ERRORについて
https://xoopscube.jp/forum/6499

このページには以下のような解決法が載っている.

\html\install\sql\mysql.structure.sql
上記ファイルの70行目と536行目を以下の様に変更して、とりあえず、この問題は解決しました。
×email varchar(256) NOT NULL default ”,
○email varchar(255) NOT NULL default ”,

いや,手元のバージョンではその通りになっている.とりあえず,mysql_→mysqli_の置換修正を先に入れておこう.関わりのあるソースは

  • class/database/mysqldatabase.php 20箇所
  • class/logger.php
  • install/language/ja_utf8/charset_mysql.php
  •  

    の3本だが,2番目は定数,3番目は正しい論理になっているので,mysqldatabase.phpの修正だけで済んだ.テーブルが生成されないという問題でもう一つの解決法が見つかった.

    XOOPS Cubeのインストール時にテーブル作成エラー
    https://itoben.com/blog/6.html

    この記事では原因を「MySQLバージョン5に対応していないことによる」としている.

    下記ファイルを修正することで問題が解消します。
    install/sql/mysql.structure.sql

    「TYPE=MyISAM」という記述を,すべて「ENGINE=MyISAM」に変更する。

    しかし,この修正もすでに入っている.もう一つの修正「C:\xampp\phpMyAdmin\libraries\classes\Util.phpの1617行目を $ret = strftime(‘%Y-%B-%d %H:%M’, (int) $timestamp); のように変更する」も入れておこう.このファイルを開くと以下のエラーが出る.

    image

    NoEditorは文字コードをSJisに変換しようとするのでUTF8が崩れる可能性がある.何か別のエディタを見つける必要がある.

    コメントを残す

    メールアドレスが公開されることはありません。 が付いている欄は必須項目です

    CAPTCHA