php 7.4 にてtFPDFを使うとエラーになった。
エラーというか「Deprecated」と「Notice」なのだが、PDFを出力するにあたり「FPDF error: Some data has already been output, can't send PDF file」となってしまうので、これを修正する。
1.get_magic_quotes_runtime()を無効
「Deprecated: Function get_magic_quotes_runtime() is deprecated」を調べると、
7.4から「get_magic_quotes_runtime()」は使えなくなった。
tfpdf.php にて、該当箇所を注釈にした。
// if(get_magic_quotes_runtime())
// @set_magic_quotes_runtime(0);
2.配列参照する文字列を修正
「Notice: Trying to access array offset on value of type int」を調べると、配列には初期設定が必要などと出てくる。
今回の場合そうではなく、配列ではないものを配列として参照しているから怒られたもよう。
「Notice」なので「error_reporting(4);」にすると無視できるが、「error_reporting(-1);」としているので回避する。
tfpdf.php にて、怒られた箇所は「function UTF8StringToArray($str)」内にある。
このサブでは、日本語文字が入っている「$str」をうけとり、一字づつアスキーコードを判定するのだが、そこで怒られる。
$h = ord($str[$i]);
$str は配列ではないためだ。
$h = ord(substr($str, $i, 1));
これで回避できた。
本来なら「 tFPDF」の使用をやめて、「TCPDF」などに移行すべきである。
しかし、いままでのPDFを出力するPHPをすべて書き替えるなんて、ちょっと無理。
なので、いまのところなんとか使い続けているが、PHP 8.1などではまた修正が必要かもしれない。
エラーというか「Deprecated」と「Notice」なのだが、PDFを出力するにあたり「FPDF error: Some data has already been output, can't send PDF file」となってしまうので、これを修正する。
1.get_magic_quotes_runtime()を無効
「Deprecated: Function get_magic_quotes_runtime() is deprecated」を調べると、
7.4から「get_magic_quotes_runtime()」は使えなくなった。
tfpdf.php にて、該当箇所を注釈にした。
// if(get_magic_quotes_runtime())
// @set_magic_quotes_runtime(0);
2.配列参照する文字列を修正
「Notice: Trying to access array offset on value of type int」を調べると、配列には初期設定が必要などと出てくる。
今回の場合そうではなく、配列ではないものを配列として参照しているから怒られたもよう。
「Notice」なので「error_reporting(4);」にすると無視できるが、「error_reporting(-1);」としているので回避する。
tfpdf.php にて、怒られた箇所は「function UTF8StringToArray($str)」内にある。
このサブでは、日本語文字が入っている「$str」をうけとり、一字づつアスキーコードを判定するのだが、そこで怒られる。
$h = ord($str[$i]);
$str は配列ではないためだ。
$h = ord(substr($str, $i, 1));
これで回避できた。
本来なら「 tFPDF」の使用をやめて、「TCPDF」などに移行すべきである。
しかし、いままでのPDFを出力するPHPをすべて書き替えるなんて、ちょっと無理。
なので、いまのところなんとか使い続けているが、PHP 8.1などではまた修正が必要かもしれない。
※コメント投稿者のブログIDはブログ作成者のみに通知されます