PHPのバージョンを7に上げたらPDFファイルを生成するライブラリでエラーが出たので修正した話し
- 2020.02.06
- PHP
使っているライブラリは、PHPファイルを見ると、
FPDF – Varsion1.6
FPDI – Version 1.3
FPDF_TPL – Version 1.1.3
と書いているので、これだと思います。
まずは、最初は、バージョンアップした時によく出るお決まりのこのエラー
Parse error: syntax error, unexpected ‘new’ (T_NEW)
これは
=& new WP_Query();
となっているのを、&を取って
= new WP_Query();
にすれば、解消できる。
なので、=& new で検索して、該当するコードを探して修正。
該当する箇所は以下の4か所
pdf\fpdi.php
90行目 $this->parsers[$fn] = & new fpdi_pdf_parser($fn, $this);
pdf\fpdi_pdf_parser.php
244行目 $decoder = & new $filterName($this->fpdi);
pdf\pdf_parser.php
102行目 $this->c = & new pdf_context($this->f);
437行目 $tmp_c = & new pdf_context($this->f);
次に、
Fatal error: Uncaught Error: Call to undefined function set_magic_quotes_runtime()
てなエラーがでるので、「set_magic_quotes_runtime」でWebで検索すると、こちらの情報が見つかります。 https://www.php.net/manual/ja/function.set-magic-quotes-runtime.php
この関数は PHP 5.3.0 で 非推奨 となり、 PHP 7.0.0 で 削除 されました。
とのことなので、該当する箇所のコードを
if(version_compare(PHP_VERSION, '5.3.0', '<')){
set_magic_quotes_runtime(0);
}
のように変更します。該当するコードは、pdf\japanese.phpに 344行目あたりと、370行目あたりの2ヵ所ありました。
それを修正すると
Warning: Declaration of FPDF_TPL::Image($file, $x, $y, $w = 0, $h = 0, $type = ”, $link = ”, $align = ”, $resize = false, $dpi = 300, $palign = ”, $ismask = false, $imgmask = false, $border = 0) should be compatible with FPDF::Image($file, $x = NULL, $y = NULL, $w = 0, $h = 0, $type = ”, $link = ”) in /usr/home/ ********** /html/wp-content/plugins/products-editor/lib/pdf/fpdf_tpl.php on line 409
Warning: Cannot modify header information – headers already sent by (output started at /usr/home/**********/html/wp-content/plugins/products-editor/lib/pdf/fpdf_tpl.php:409) in /usr/home/ ********** /html/wp-content/plugins/products-editor/lib/pdf/fpdf.php on line 1017
の2つの「Warning」が残ります。2つ目の「Warning」は、PHPコードに空行とかがると出てたんだけど、今回は1つ目の「Warning」の文字列が原因です。
「Warning」は 「Error」 とはことなり、警告なので出てもプログラムは動くので、とりあえず非表示にします。
なので、pdf/fpdf.php の頭に
error_reporting(E_ERROR | E_PARSE);
と書いて、Warningは表示しないようにしました。
これで、出来上がりです。
-
前の記事
dl,dt,ddを表形式表示をするスタイル 2020.01.20
-
次の記事
Excelグラフで日付を月ごとのグループで表示したい。 2020.02.06