環境
旧環境:PHP 5.2.8 / Windows 32bit / SJIS
新環境:PHP 7.4.6 / Windows 64bit / UTF-8 (XAMPPで構築)
reviserのバージョン:0.24 beta 2008/01/13
新環境:PHP 7.4.6 / Windows 64bit / UTF-8 (XAMPPで構築)
reviserのバージョン:0.24 beta 2008/01/13
現象(1)
reviser.phpのincludeでエラーとなる。
■原因
■対応
Deprecated: Array and string offset access syntax with curly braces is deprecated
■原因
asc2utf関数内で配列要素を { } で指定していた。
■対応
[ ] に変更する。
変更前:
変更後:
変更前:
$utfname.=$ascii{$i}."\x00";
変更後:
$utfname.=$ascii[$i]."\x00";
現象(2)
includeで別のエラー
■原因
■対応
Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; Excel_Reviser has a deprecated constructor
■原因
クラス名とコンストラクタ名が同じ "Excel_Reviser" のため。
■対応
コンストラクタ名を "__construct" へ変更する。
変更前:
変更後:
変更前:
function Excel_Reviser(){
変更後:
function Excel_Reviser__construct(){
現象(3)
get_magic_quotes_runtime関数でエラー
■原因
■対応
Deprecated: Function get_magic_quotes_runtime() is deprecated
■原因
「この関数は PHP 7.4.0 で 非推奨になります。この関数に頼らないことを強く推奨します。」とのこと。
■対応
とりあえず 関数削除し false をセットするように修正。
変更前:
変更後:
変更前:
$this->Flag_Magic_Quotes = get_magic_quotes_runtime();
変更後:
$this->Flag_Magic_Quotes = false;
現象(4)
Excelのオープン処理でエラー
■原因
■対応
ERROR file(~) is broken (ExBlock)
■原因
不明
Excelファイルヘッダのチェックでもやっているんだろうか?
Excelファイルヘッダのチェックでもやっているんだろうか?
■対応
よくわからないので全てコメントアウト
現象(5)
__to_utf16関数の呼び出しでエラー
■対応
Notice: Only variables should be passed by reference
■対応
__to_utf16関数の第1引数 &%str の "&" を除去する。
変更前:
変更後:
変更前:
function __to_utf16(&$str,$opt=0)
変更後:
function __to_utf16($str,$opt=0)
上記1~5の対応で何となく動いたので良しとする
技術メモ, PHP, reviser
2 件のコメント:
Good Job! ちなみに現象(4)は、OLEコンテナというバイナリデータ保管形式の整合チェックする際にPHPの整数バイト長を4バイト決め打ちで作ってしまったからです。破損ファイルでなければコメントアウトで問題無しです。
Unknown さん、ありがとう。
コメントを投稿