myx_backup Ver 1.10のPHP7対応

Similar documents




Microsoft Word - 46流力・ANSS14リーフレット_final.docx

intra-mart Accel Platform — IM-Repository拡張プログラミングガイド   初版  

Microsoft Word - Android_SQLite講座_画面800×1280

Microsoft PowerPoint - ruby_instruction.ppt

intra-mart WebPlatform/AppFramework

プログラミング基礎I(再)

Prog2_12th

オブジェクト指向プログラミング・同演習 5月21日演習課題

Ruby演習テキスト1

.NETプログラマー早期育成ドリル ~VB編 付録 文法早見表~

基礎計算機演習 実習課題No6


PHP プログラムからの利用 (i5_connect) <html> <head><title> シンプルな PHP</title></head> <body> DBCS 漢字 / 半角かなをパラメータで i5 に渡す場合には i5 への接続時にこの記述が必要 <?php $conn = i5_co

Microsoft Word _VBAProg1.docx

CodeIgniter Con 2011, Tokyo Japan, February

JEB Plugin 開発チュートリアル 第4回

Microsoft Word - PHP_SQLServer2012

前ページからの続き // テキストボックス02 id 属性で取得 // id 属性で取得する場合は一意に決まるので 何番目かの指定は不要 var textbox02elem = document.getelementbyid("text_box02_id"); if ("001" == statee

とても使いやすい Boost の serialization

PowerPoint プレゼンテーション


Java講座

Microsoft PowerPoint - 計算機言語 第7回.ppt

PowerPoint Presentation

haskell.gby

第9回 型とクラス

intra-mart Accel Platform — IM-BloomMaker プログラミングガイド   初版  

hands_on_4.PDF

Microsoft Word - Training10_プリプロセッサ.docx

1.PHP 入門 PHP の概要と PHP プログラムを作成するための 基本事項を説明します PHP とは PHP プログラムの構成 プログラムの実行

Taro php.jtdc

Oracle Database Connect 2017 JPOUG

1 SQL Server SQL Oracle SQL SQL* Plus PL/SQL 2 SQL Server SQL Server SQL Oracle SQL SQL*Plus SQL Server GUI 1-1 osql 1-1 Transact- SQL SELECTFROM 058

プログラミング入門1

基礎プログラミング2015

ICONファイルフォーマット

Microsoft PowerPoint - CproNt02.ppt [互換モード]

JEB Plugin 開発チュートリアル 第3回

設問 println はそこで指定されている内容を出力して改行するものである. 一方,print は内容を出力して改行しないものである. 下記のプログラムそれぞれについて出力結果がどうなるか回答せよ. 下記のプログラム - を実行すると, fms という文字列が 回表示される. プログラム - vo

B演習(言語処理系演習)第一回

Exam : 1z1-809-JPN Title : Java SE 8 Programmer II Vendor : Oracle Version : DEMO Get Latest & Valid 1z1-809-JPN Exam's Question and Answers 1 from Ac

情報システム設計論II ユーザインタフェース(1)

<837D A4A94AD8EBA202D B C20584F4F AD68C5782CC8A4A94AD82C582A282EB82A282EB>

_IMv2.key

Prog2_10th

ストラドプロシージャの呼び出し方

プログラミング入門1

GMA024F0 GridDB Web API 説明書 Toshiba Digital Solutions Corporation 2017 All Rights Reserved.

S2DaoでもN:Nできます

第 2 章インタフェース定義言語 (IDL) IDL とは 言語や OS に依存しないインタフェース定義を行うためのインタフェース定義言語です CORBA アプリケーションを作成する場合は インタフェースを定義した IDL ファイルを作成する必要があります ここでは IDL の文法や IDL ファイ

Visual Studio2008 C# で JAN13 バーコードイメージを作成 xbase 言語をご利用の現場でバーコードの出力が必要なことが多々あります xbase 言語製品によっては 標準でバーコード描画機能が付加されているものもあるようで す C# では バーコードフォントを利用したりバー

Microsoft Word - Cプログラミング演習(12)

fp.gby

試験問題に記載されている会社名又は製品名は, それぞれ各社の商標又は登録商標です なお, 試験問題では, 及び TM を明記していません

Javaプログラマー早期育成ドリル ~コードリーディング編~ 解答

K227 Java 2

Microsoft PowerPoint - Pro110111

Java知識テスト問題

Case 0 sqlcmdi.parameters("?tencode").value = Iidata(0) sqlcmdi.parameters("?tenname").value = Iidata(1) 内容を追加します sqlcmdi.executenonquery() Case Else

Microsoft PowerPoint - ●SWIM_ _INET掲載用.pptx

Prog2_10th

CMP演習

Microsoft Word - no15.docx

Microsoft PowerPoint - ProD0107.ppt

Microsoft PowerPoint ppt


JavaScript演習

Condition DAQ condition condition 2 3 XML key value

デザイン戦略(コンピュータアニメーション) 2009年度春学期

Compatibility list: vTESTstudio/CANoe

PowerPoint プレゼンテーション

6 関数 6-1 関数とは少し長いプログラムを作るようになると 同じ処理を何度も行う場面が出てくる そのたびに処 理を書いていたのでは明らかに無駄であるし プログラム全体の見通しも悪くなる そこで登場す るのが 関数 である 関数を使うことを 関数を呼び出す ともいう どのように使うのか 実際に見て

NetworkApplication-09

1 目次 1 目次 はじめに Tips セットアップ 事前準備 事前準備 セットアップ セットアップ ( その他 ) Tips 概要 概要 処理フ

Copyright c 2008 Zhenjiang Hu, All Right Reserved.

Microsoft PowerPoint - 11RubyIntro-No02.ppt [互換モード]

10th Developer Camp - B5

Javaプログラムの実行手順

問 次の Fortran プログラムの説明及びプログラムを読んで、設問に答えよ。

ハッシュテーブル

slide5.pptx

Dolteng Scaffoldに対する機能追加とマスタ-ディテールScaffoldの紹介

Microsoft PowerPoint - C_Programming(3).pptx

PowerPoint プレゼンテーション

プログラミング入門1

Java演習(4) -- 変数と型 --

A. InstallScript プロジェクト InstallScript インストールは InstallScript エンジンによって制御され 決められた順序で一連のイベントが生成されます これらのイベントは インストールを実行するソフトウェアハンドラーをトリガーします たとえば インストールがロ

listings-ext

HABOC manual

r03.dvi

JavaプログラミングⅠ

年組番号名前点数 設問 設問 設問 設問 設問 設問

3 Powered by mod_perl, Apache & MySQL use Item; my $item = Item->new( id => 1, name => ' ', price => 1200,


プログラミングD - Java

2 Java 35 Java Java HTML/CSS/JavaScript Java Java JSP MySQL Java 9:00 17:30 12:00 13: 項目 日数 時間 習得目標スキル Java 2 15 Web Java Java J

Transcription:

myx_backup Ver 1.10 の PHP7 対応 Published JJ1RLWon by 2016-05-03 (445 閲覧 ) XOOPS Cube の日頃のメンテナンスで使っているモジュールの myx_backup Ver 1.10 の PHP7 への対応お得意の ちょっとだけ改造 自前で行っています mysql 拡張から mysqli 拡張へ変更するため set_magic_quotes_runtime でのエラーメッセージへの対応で admin/backup.php admin/backup_bymod.php admin/dump.php admin/restore.php の set_magic_quotes_runtime set_magic_quotes_runtime(0); set_magic_quotes_runtime($mqr); //set_magic_quotes_runtime(0); //set_magic_quotes_runtime($mqr); admin/mysqli_fnc.php として mysql 拡張から mysqli 拡張へ置き換え用に mysqli_fnc.php の内容は ここから ---------------- <?php MYSQLI FLAG 定数読み込みビットフラグ整数と名称の配列生成する 引数に true 渡すと旧 MySQL 関数互換の配列返す @param bool MySQL 関数互換フラグ @return array /

function get_flag_names($compat = false){ if($compat){ return array( 1 => "not_null", 2 => "primary_key", 4 => "unique_key", 8 => "multiple_key", 16 => "blob", 32 => "unsigned", 64 => "zerofill", 128 => "binary", 256 => "blob", 512 => "auto_increment", 1024 => "timestamp" ); else { $flags = array(); $constants = get_defined_constants(true); foreach ($constants[ mysqli ] as $c => $n){ if (preg_match( /MYSQLI_(.)_FLAG$/, $c, $m)){ if (!array_key_exists($n, $flags)){ $flags[$n] = strtolower($m[1]); return $flags; MYSQLI_TYPE_ 定数読み込みビットフラグ整数と名称の配列生成する 引数に true 渡すと旧 MySQL 関数互換の配列返す @param bool MySQL 関数互換フラグ @return array / function get_type_names($compat = false){ $types = array(); $constants = get_defined_constants(true); foreach ($constants[ mysqli ] as $c => $n){ if (preg_match( /MYSQLI_TYPE_(.)$/, $c, $m)){ $types[$n] = strtolower($m[1]); // MySQL 関数互換モードの場合 MySQL 関数が返す値で置き換える if($compat){ $types[0] = "real"; $types[1] = "char"; $types[2] = "int";

$types[3] = "int"; $types[4] = "real"; $types[5] = "real"; $types[8] = "int"; $types[9] = "int"; $types[248] = "string"; $types[249] = "blob"; $types[250] = "blob"; $types[251] = "blob"; $types[253] = "string"; return $types; mysqli_fetch_field() 等で取得した stdclass オブジェクト mysql_fetch_field() 互換の形式で作り直す @param object mysqli_fetch_field() 等で取得した stdclass オブジェクト @param bool MySQL 関数互換フラグ @return object / function remake_field_object($field, $compat = true){ $obj = new stdclass(); $flags = get_flag_names($compat); $types = get_type_names($compat); $numeric_types = array(1, 2, 3, 4, 5, 8, 9, 16, 246); $compat_flags = array("not_null", "primary_key", "unique_key", "multipl e_key", "blob", "unsigned", "zerofill"); $nocompat_keys = array("orgname", "orgtable", "db", "catalog", "length", "charsetnr", "decimals"); $compat_sortkey = array("name", "table", "def", "max_length", "not_null", "primary_key", "multiple_key", "unique_key", "numeric", "blob", "type", "unsigned", "zerofill"); foreach((array) $field as $key => $value){ switch($key){ case "flags": foreach($flags as $num => $name){ // MySQL 関数互換モードの場合 mysql_fetch_field() の返り値にないプロパティは飛ばす if($compat == true &&! in_array($name, $compat_flags)) continue; $obj->$name = ($value & $num)? 1 : 0; case "type": $obj->type = $types[$value]; // $obj->numeric は flags の中には含まれていないため type 見て判断する $obj->numeric = (in_array($value, $numeric_types))? 1 : 0; // TEXT 型の場合 type は blob となるが flags では blob として扱われないためここでフラグ立てる if($obj->type == "blob") $obj->blob = 1;

default: // MySQL 関数互換モードの場合 mysql_fetch_field() の返り値にないプロパティは飛ばす if($compat == true && in_array($key, $nocompat_keys)) continue; $obj->$key = $value; // オブジェクト配列にキャストして処理する場合 キャスト後の配列の順序はプロパティ定義順となる // そのため MySQL 関数互換モードの場合 MySQL 関数と同一の定義順に並び替える if($compat == true){ $sorted = new stdclass(); foreach($compat_sortkey as $key){ $sorted->$key = $obj->$key; $obj = $sorted; return $obj; mysqli_fetch_field_direct() の結果から mysql_field_() の各種返り値と同一形式のデータ作成し返す XXX: 順次 mysqli の正式な関数に対応するときのため フラグやタイプ MySQLi 準拠のものに切り替えられるよう互換フラグ渡せるようにしている @param mysqli_result MySQLi 結果オブジェクト @param int フィールド番号 @param string 対象となる mysqli_fetch_field_direct() 関数の返り値オブジェクトのプロパティ名 @param bool MySQL 関数互換フラグ @return mixed / function mysqli_field_compat(&$res, $offset, $key, $compat = true){ $field = mysqli_fetch_field_direct($res, $offset); $result = false; if($field){ switch($key){ case "flags": $list = array(); $flags = get_flag_names($compat); foreach($flags as $num => $name){ if($field->flags & $num) $list[] = $name; $result = implode(" ", $list); case "type": $types = get_type_names($compat); if(!is_null($types[$field->type])) $result = $types[$field->type]; default: $result = $field->$key;

return $result; mysql_field_flags() 互換関数 XXX: mysqli の正式な関数に対応するときのため フラグやタイプ MySQLi 準拠のものに切り替えられるよう互換フラグ渡せるようにしている @param mysqli_result MySQLi 結果オブジェクト @param int フィールド番号 @return string / function mysqli_field_flags(&$res, $offset, $compat = true){ return mysqli_field_compat($res, $offset, "flags", $compat); mysql_field_type() 互換関数 XXX: mysqli の正式な関数に対応するときのため フラグやタイプ MySQLi 準拠のものに切り替えられるよう互換フラグ渡せるようにしている @param mysqli_result MySQLi 結果オブジェクト @param int フィールド番号 @return string / function mysqli_field_type(&$res, $offset, $compat = true){ return mysqli_field_compat($res, $offset, "type", $compat); mysql_field_len() 互換関数 @param mysqli_result MySQLi 結果オブジェクト @param int フィールド番号 @return int / function mysqli_field_len(&$res, $offset){ return mysqli_field_compat($res, $offset, "length"); mysql_field_name() 互換関数 @param mysqli_result MySQLi 結果オブジェクト @param int フィールド番号 @return string

/ function mysqli_field_name(&$res, $offset){ return mysqli_field_compat($res, $offset, "name"); mysql_field_table() 互換関数 @param mysqli_result MySQLi 結果オブジェクト @param int フィールド番号 @return object / function mysqli_field_table(&$res, $offset){ return mysqli_field_compat($res, $offset, "table"); mysql_result() 互換関数 XXX: mysqli_result クラスと区別するため 関数名に接尾語として _compat 付けている @param mysqli_result MySQLi 結果オブジェクト @param int 行番号 @param int フィールド番号 @return string / function mysqli_result_compat(&$res, $row, $field = 0){ mysqli_data_seek($res, $row); $fields = (is_int($field))? mysqli_fetch_row($res) : mysqli_fetch_assoc ($res); return (is_null($fields[$field]))? false : $fields[$field]; mysqli_unbuffered_query() 互換関数 XXX: 他の MySQLi 関数と統一性持たせるため mysql_unbuffered_query() とは引数の順序が異なる @param mysqli MySQLi 接続オブジェクト @param string SQL @return string / function mysqli_unbuffered_query(&$conn, $query){ mysqli_real_query($conn, $query); return mysqli_use_result($conn);?> ここまで ----------------

admin/export.php の 4 行目に require_once./mysqli_fnc.php ; 追加 25 行目 $fnum = mysql_num_fields($res); $fnum = mysqli_field_count($res); 28-30 行目 $fname[$i] = mysql_field_name($res, $i); $fmeta[$i] = mysql_fetch_field($res, $i); $fflag[$i] = mysql_field_flags($res, $i); $fname[$i] = mysqli_field_name($res, $i); $fmeta[$i] = mysqli_fetch_field_direct($res, $i); $fflag[$i] = mysqli_field_flags($res, $i); admin/function.php 26-29 行目 for ($i = 0; $i < mysql_num_fields($res3); $i++) { $fname = mysql_field_name($res3, $i); $fmeta[$fname] = mysql_fetch_field($res3, $i); $fflag[$fname] = mysql_field_flags($res3, $i); for ($i = 0; $i < mysqli_field_count($res3); $i++) {

$fname = mysqli_field_name($res3, $i); $fmeta[$fname] = mysqli_fetch_field_direct($res3, $i); $fflag[$fname] = mysqli_field_flags($res3, $i); legacy 2.2 以降で message から profile への移行に対応するため admin/header.php 47 行目 legacy_contents, legacyrender_theme legacy_contents, legacyrender_theme, message_inbox, message_outbox, message_users, profile_data, profile_definitions PHP Memory Limit 取得出来ない問題への対応 admin/index.php 45 行目 print <tr><td nowrap="nowrap">php Memory Limit</td><td nowrap="nowrap ">.memory_get_usage(). Bytes</td></tr> ; print <tr><td nowrap="nowrap">php Memory Limit</td><td nowrap="nowrap ">.ini_get( memory_limit ). Bytes</td></tr> ; 以上 8 個のファイルの変更と 1 個のファイル追加しました 注意点 Analyzer と xupdate モジュールが [ unknown ] となり バックアップでは Analyzer と xupdate モジュールが unknown モジュールとして出力モジュール単位では Analyzer と xupdate モジュールがテーブル特定できずに空となりまダンプでは 500 サーバエラーとなります なので バックアップ 選択すれば すべてのモジュールバックアップ出来ます 取り敢えず mysql 拡張 ( 関数 ) から mysqli 拡張 ( 関数 ) への移行で対応しました 出来れば mysql 関数から PDO 関数へ移行したかったが それほどのスキルがありません

Powered by TCPDF (www.tcpdf.org) 追加したファイルは コピペ させて頂きましたので 作者に感謝です..m( )m 参考にさせて頂いたサイト MySQL 関数から MySQLi 関数への移行作業メモ