xamppとXOOPSを一旦原状回復するという方向に方針変更した

昨日はphp.ini-developmentをタブレットで半分くらい読むうち寝てしまった.xamppとXOOPSの最新版上にサイトイメージを組み込むという方針を撤回して,xamppとXOOPSを以前の状態に戻して一旦原状回復するという方向に切り替えたのだが,データベースが開けない状態になっている.phpMyAdminが使えるようになっていればその上で調整することは可能だが,phpMyAdminはPHP5.3以上でないと使えない.PHPのバージョンを上げるというのはそれほど難しくないと思ったのだが,なかなかうまくゆかない.xamppのバックアップはEverythingを導入してざっと確認した限りでは現在使っている一種類以外はどこにも保存されていないように思われる.XOOPSはEドライブの「自家サーバ」フォルダにあるものが最新でSQLも95MBというのが残っている.おそらくこれがベストなのではないかと思う.

PHP5.3.29のパッケージにはphp.iniは入っていない.現状PHP5.3.29をコピーしただけの状態になっているので,まずphp.iniを整備して動かすといころから初めなくてはならない.作業に掛かる前にmysqlとXOOPSの始業時バックアップを取っておくことにしよう.Dドライブには90GBの空き領域があるのでまだまだ余裕だ.php.iniをゼロから書き直すのも大変なのでxampp 2007に入っているものをコピーしてみる.⇒xamppを起動すると*** WARNING: Directory mismatch ***という警告が出て,Apacheを起動してもすぐ落ちてしまう.

image

ネット上に「これはレジストリの問題だ」という回答があった.regeditで確認したところ\HKEY_LOCAL_MACHINE\SOFTWARE\xamppにはInstall_Dir:C:\xampp, Location:C:\xamppと登録されているので間違っていないように思われる.これらの値は\HKEY_LOCAL_MACHINE\SOFTWARE\xamppの位置にある.しかし,レジストリの以下の場所にはC:\xampp\php\php.iniとC:\Program Files(x86)\PHP\php.iniの値がある.

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Installer\UserData\S-1-5-18\Components\7226D23B061375D47942B053CD215891

また,\Installer\UserData\S-1-5-18\Products\AE12CF527C028E54FA2791CF5DC60474\Features にもXAMPPという文字列が入っている行があるようだ.現在XAMPPもPHPもアプリ登録されていない.HKEY_LOCAL_MACHINE\SOFTWARE\xamppを大文字でXAMPPとしてみたが,動作は変わらない.PHPはすでにアンインストールしているのでProgram FilesのPHPを削除してみよう.⇒動作には無関係のようだ.\HKEY_LOCAL_MACHINE\SOFTWARE\xamppというエントリを削除して,もう一度setup_xampp.batを実行してみることにする.このエントリには4つのサブキーが入っている.

  • Install_Dir:=C:\xampp
  • Language:=en
  • Location:=C:\xampp
  • Version:=7.4.2-0
  •  

    キーを削除してsetup_xampp.batを実行してみたが,レジストリには登録されなかった.とりあえず復元しておこう.ダメだ.検索で出てこない.設定の仕方がまずかったのだろうか?⇒サブキーは値として入力する必要があった.⇒復元できたようだ.しかし,どうもregeditの検索の動作もやや不審だ.修正後に検索したところこれまでに見つかっていないエントリでXAMPPの文字列を見つけ出してきた.いや,探し方がまずかったようだ…画面が変化しないので検索終了と思っていたが,XAMPP→Install_Dir→Location→のように動いていた.

    コンピューター\HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\bam\State\UserSettings\S-1-5-21-3356159307-1250330512-3202486127-1001

    というところに\Device\HarddiskVolume5\Users\babalabo\Desktop\xampp-windows-x64-7.4.2-0-VC15-installer.exeという値が入っている.もう一つ\Device\HarddiskVolume5\xampp\apache\bin\apache.exeというのもある.いやここにはそれ以外もいろいろ入っている.\Device\HarddiskVolume5\xampp\mysql\bin\winmysqladmin.exe,\Device\HarddiskVolume5\xampp\php\php.exe,xampp_restart.exe, xampp_start.exe, xampp_stop.exe, xampp_control.exeなど実行したアプリの履歴がそっくり残っているようだ.

    \HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\EventLog\Application\MariaDBにはEventMessageFile:c:\xampp\mysql\bin\mysqld.exeという値も入っている.コンピューター\HKEY_USERS\S-1-5-21-3356159307-1250330512-3202486127-1001というところには無数と言ってよいくらい各種の記録が残っている,画像ファイル,サウンドその他まで.⇒Apacheが落ちてしまう原因はおそらくこれとは別の問題と考えられるので,とりあえず,このWarningは無視することにしよう.しかし…Appacheが走らないことには何も始まらない.どうしたらよいか?バックアップに戻ってみよう.xampp new 2020-03-07というのがある.これはnewというラベルが付いているが実際は古いものだ.xamppのコントロールパネルが古い.setup_xampp.batを実行してWarningが3件出た.

    image

    AppacheもMySQLも起動できる.いや,勘違いしていた.確かにこれは新しいバージョンのxamppだ.古いxammpのバックアップはxampp 2007とxampp OLDしかない.xampp OLDの方が日付が新しいのでこれを使ってみよう.setup_xampp.batを起動すると

    Sorry…cannot find php cli!
    Must abort these process!

    というエラーになる.xampp-control.exeは実行できる.Appache, MySQLも起動できる.Adminボタンを押すとlocalhostに飛んで,

    Fatal error: Class ‘XCube_Root’ not found in D:\XOOPS\header.php on line 17

    が出る.DocumentRoot は “D:/XOOPS” になっている.httpd.confでxampp\htdocsに切り替えて動作するようになったが,ステータスで見るとMySQLが落ちた状態になっている.xamppのコントロールパネルではグリーンに点灯しているのだが…C:\xampp\security\htdocs\langにjp.phpを追加しておこう.PHPのバージョンは5.2.3,Apache は2.2.4.PHP.iniはC:\xampp\apache\bin\php.iniを使っているとなっているが,ここにはphp.iniファイルは存在しない.phpMyAdminボタンを押すと以下のエラーが出る.

    Parse error: syntax error, unexpected T_STRING, expecting T_CONSTANT_ENCAPSED_STRING or ‘(‘ in C:\xampp\phpMyAdmin\index.php on line 10

    line 10 の内容は:

    use PhpMyAdmin\Controllers\HomeController;

    だが,多分これはマルチバイトをサポートしていないためではないかと思う.xamppのコントロールパネル→Admin…ではWinMySQLadmin 1.4のパネル(winmysqladmin.exe)が開ける.このパネルでは

    Server=C:/xampp/mysql/bin/mysqld-nt.exe

    のようになっている.いや,そもそもxamppの中でphpフォルダが存在しない状態になっていた.phpはphp.ORGとリネームされたままになっている.⇒こんどはXAMPPのダッシュボードのステータスでもMySQLがグリーンになった.

    XAMPPのphpMyAdminボタンのリンクは http://localhost/phpmyadmin/ となっているが,xampp/htdocsにはphpMyAdminは存在しない.これは少しおかしいような気がする.⇒本来の場所に移動したが,出るエラーは変わらない.オリジナルのxamppでも同じ場所にある.パスを内部で書き換えているのではないだろうか?2007-09-02 XOOPS Eclipse 導入版に入っているphpMyAdminをコピーして使ってみよう.⇒開けた!これで問題は大体解決したような気がする.phpMyAdminの画面は下記のような古い画面だ.

    image

    データベースにはxoopsというデータベースが作られている.登録ユーザはxoopsという管理人だけだ.データベースのユーザはpmaとrootだけ.どちらもパスワードは使っていない.ドキュメントルートをXOOPSに切り替えてみよう.⇒エラーが出た.

    Fatal error: Class ‘XCube_Root’ not found in D:\XOOPS\header.php on line 17

    mainfile.phpが整備されていないためと思われる.これはXOOPSを初期化しようとして白紙のmainfile.phpに変えたためだろう.このファイルはmainfile.dist.phpのコピーのはずだ.オリジナルに切り替えてみよう.⇒以下のエラーになった.

    db selection failed.

    データベースと接続できていないということだろう.しかし,もうphpMyAdminが使えるようになっているのだから恐れるものはない.XOOPSの下にphpMyAdminをコピーしてブラウザから開けるようにしておこう.⇒開いた.あとは,mainfile.phpを調整するだけだ.データベースユーザはroot,パスワードなしになっている.プレフィックスはdc2b69, データベース名はXOOPSに変更したが,SALTが分からない.まぁ,これで行ってみよう.

    今度は別のエラーが出た.

    image

    確かにsessionというディレクトリは存在しない.ここにはsession履歴のようなものが入るらしい.しかし,sessionフォルダを持たないものもある.てか,それが入っているのはXOOPS Xだけだ.とりあえず,その名前のフォルダを作ってみる.これで開けるようになった.

    image

    管理人のIDはXOOPSだがパスワードが分からない.「今すぐ登録?」というボタンがあるので,動作するかどうか試してみよう.⇒結構堅牢に動作している.

    image

    本当にメールを送っているのかどうか?チェックしてみよう.いや,おそらく無理だろう.ネットには接続していない環境だし…このPCではメールの送受信をやっていないので送られてきたとしても受信できない.アカウントを登録するためには一度ネットに出てサーバーと接続しなくてはならない.いや,それでもデータベースには今登録した名前が入っている.user_viewmailというフィールドがある.これがメールアカウントをチェックしたというマークかな?あとは,rankとlevelというのがある.この値を設定してみよう.管理人としてログインできた!Warningがだいぶ出ているが,本番では表示しないようにできるだろう.

    Warning [PHP]: Cannot modify header information – headers already sent by (output started at D:\XOOPS\kernel\module.php:207) in file D:\XOOPS\modules\legacyRender\kernel\Legacy_RenderTarget.class.php line 25
    Warning [PHP]: Cannot modify header information – headers already sent by (output started at D:\XOOPS\kernel\module.php:207) in file D:\XOOPS\modules\legacyRender\kernel\Legacy_RenderTarget.class.php line 26

    アカウント編集画面で個人情報に書き込みをして実行でエラーが出て停止してしまった.

    Module File for pico Not Found!Notice [PHP]: Undefined property: D3LanguageManager::$my_language in file D:\XOOPS\preload\SetupAltsysLangMgr.class.php line 70
    Warning [PHP]: Cannot modify header information – headers already sent by (output started at D:\XOOPS\kernel\module.php:207) in file D:\XOOPS\modules\user\actions\EditUserAction.class.php line 92
    Warning [PHP]: Cannot modify header information – headers already sent by (output started at D:\XOOPS\kernel\module.php:207) in file D:\XOOPS\core\XCube_Controller.class.php line 238

    babalaboからxoopsにメッセージを送信してみた.ただし,これはxoopsでログインしないと見えない.picoというモジュールだけはインストールされているようだが,HOME画面でpicoのボタンを押したら Object not found! エラーになった.picoというモジュールの代わりにpico1とpico2が入っている.⇒xoopsのパスワードを設定しログインしてみたところ,受信箱には送信したメッセージが入っていた.まぁまぁに動作しているとは言えそうだ.XOOPSにはそれに相当するSQLが残っているので,これをロードして動作を見ることにしよう.まずはバックアップを取っておこう.xamppも丸ごとコピーしておく.XOOPSはXOOPS 2020-03-08 GOODの名前で保存した.SQLも別に保存してみよう.

    このphpMyAdminはエキスポートデータをコンソール出力するだけでファイルには保存してくれない…PDF形式を選択したらファイルに保存された.改めてSQLを選択したら保存できた.おそらく操作しないとデフォルトの「テキストを開く」の動作になってしまうのだろう.localhost.SQLですべてのデータベースを出力した.SQLファイルは保存したXOOPSフォルダに格納しておくことにしよう.この方が確実なのではないかと思う.XOOPSにはmysql31.chicappa.jp.sqlというSQLが入っているのでこれをインポートしてみる.サイズは99,468MB,更新日時は2012‎年‎3‎月‎12‎日、‏‎19:26:02.東北大震災の後なのでおそらくほとんど最終形態に近いのではないかと思う.

    ここに入っているのはOA00090878_babalaboだけだ.すでにXOOPSというデータベースを持っているが,これは残したままインストールしてみる.「アップロードしようとしたファイルが大きすぎるようです。」エラーになった.phpMyAdminのドキュメントによれば,version 2.7.0以降ではこのようなエラーは起きないことになっているとされる.このphpMyAdminのバージョンは2.10.3だからこの条件をクリアしている.

    php.iniでupload_max_filesize, memory_limit and post_max_sizeを大きくするというのは前にもやっているが,読み込めるようにならなかったような気がする.post_max_size と memory_limit は upload_max_filesize より大きい必要があるという話もある.もし,これらでアップロードできない場合にはFTPないしSCPでアップロードするというオプションもある.また,BigDumpのようなツールを使ってファイルを分割する法,shell コマンドで送るという方法もある.とりあえず,以下のように設定してみた.

    • upload_max_filesize 120M
    • memory_limit  200M
    • post_max_size          200M

    やはりダメだった.自分で分割してみることにしよう.20115行目から下の部分を別ファイルとすることにする.⇒ダメだ.ほぼ当分割したつもりだが,Aが13MiB,Bが87MiBという不等分割になってしまった.カーソル位置で目星を付けたのだが,行番号で言うと43751行あるので,22000行くらいで切らなくてはならない.いや,前回20115行目で分割して上記のように7倍近い差になるというのはかなりおかしい.後半になると一行の文字数が大きくなっているのではないか?30000行くらいで分割してみることにする.zelkova_xpress_postsはブログへの投稿なのでおそらくここが肥大しているのだろう.これが始まるのが22552なのでこれを全般に含めなくてはならないだろう.しかし,そうすると後半の開始行が35190になってしまう.これでは後半部が小さ過ぎる.

    むしろxpressだけを1ファイルにするというのが妥当なのではないか?前半部Aが31113行になったが,サイズは14MiBしかない.xpressの部分はおそらくさらに分割しないとインポートできないと思われる.後半部Bは12661行で86MiBだ.どこかで40MBという制限を読んだ記憶があるが,もしそうだとするとBは2分割してもロードできないことになる.まぁともかくやってみよう.Aをインポートして以下のエラーになった.

    #1044 – Access denied for user ‘root’@’localhost’ to database ‘information_schema’

    このエラーは前から出ているが,’information_schema’はすでに存在しているからではないだろうか?information_schemaデータベースに書き込みないし生成している.生成しているのはCHARACTER_SETS,COLLATIONS,COLLATION_CHARACTER_SET_APPLICABILITY,COLUMNS,COLUMN_PRIVILEGES,KEY_COLUMN_USAGE,PROFILING,ROUTINES,SCHEMATA.SCHEMA_PRIVILEGES,STATISTICS,TABLES,TABLE_CONSTRAINTS,TABLE_PRIVILEGES,TRIGGERS,USER_PRIVILEGES,VIEWSで,うち書き込みしていないテーブルにはCOLUMN_PRIVILEGES,PROFILING,ROUTINES,TABLE_PRIVILEGES,TRIGGERS,VIEWがある.

    確かにinformation_schemaには何も書き込まれていないようだ.これでは多分うまく動かないと思う.ちなみにこのデータベースには725人のユーザが登録されている.試みにこの状態でどんな動きになるのかアクセスしてみよう.⇒XOOPSの方の対応修正が入っていないので今のところは前回の状態のままだ.⇒XOOPS/mainfile.phpに対応修正を入れた.⇒localhostで画面が真っ白になって中に入れない.エラーは表示されていない.

    やはり,’information_schema’への書き込みは動作に不可欠なものと見える.データベースとテーブルがすでに存在しているときのデータの追加・更新のプロトコルを調べる必要がある.⇒use でデータベースを指定してあとはレコードをinsertでよいのではないか?テーブルはIF NOT EXISTで存在しない場合にのみ生成するというのでよいと思う.

    レコードが存在するときはinsertしないという指定もできる.①INSERT IGNORE, ②INSERT … SELECT.前者はエラーを無視して単に続行するという動作,後者はSELECT文で条件が満たされる場合にのみ挿入という方式だ.前者ではデータに(ユニークカラムで)不整合が発生する可能性がある.データベースの形式が変化しない限りはinformation_schemaへの書き込みは不要だから,通常の操作としては対象データベースのエキスポート→インポートで間に合うはずだ.いや,データベースを一度ドロップして再ロードするという場合にはやはり’information_schema’への書き込みは必要になるのではないか?

    前回のインポートではinformation_schemaには何も書き込まれていない.これは無条件でデータベースを生成しようとしためなのか,何か他に理由があるのかどうか?SQL文を作ってテストしてみる必要がある.

    incredibuildという知らないソフトがバックグラウンドで走っている.イスラエル製品だ!分散ネットワーク上で開発プロセスの並列実行を可能にするというのだが,こんなものを導入した記憶はない.サービスとして実装されているのだろうか?プログラムと機能のリストには現れていない.IIS 10.0 Expressというのもインストールした記憶はない.Unityというのがあるがこれは何だろう?⇒いや,あった.Xoreax IncrediBuild 9.3.2 (Build 2457)というラベルが付いていた.IIS 10.0 ExpressとはIIS Webサーバーの簡易版という感じだが,不用だろう.Unityというのはゲームエンジンないしゲーム開発環境のようだ.これもまったく記憶がない…それにしても昨日,今日の訪問者数が20台に激減しているというところが不思議…

    コメントを残す

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

    CAPTCHA