ラブラドールレトリバー「忠太の心の声」

黒ラブ忠太と忠太パパのブログ。
最近は仕事の備忘録としてのエントリーが多いです。

php 7.4 にて tFPDFを使うとエラーになる。その対処法。

2022-07-13 | Web・PC
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などではまた修正が必要かもしれない。


最新の画像もっと見る

コメントを投稿