PHP5.3.0以上でMBFPDFを使用すると「ファイルが破損している」とエラーがでる場合の対処法

症状

PHP5.3.0以上でMBFPDFを使用してPDFを作成しようとすると、「ファイルが破損している」または「正しくエンコードされなかった」というエラーが出て、PDFが表示されなくなる。

原因

PHPでは、バージョン5.3.0以降マジッククォート機能を非推奨としており、これらの関数を使用すると警告が表示されるようになった。MBFPDFを使用している場合、この警告がPDFファイルに直接書き込まれてしまうため、不正な文字列がファイルの破損とみられ、正しく表示されなくなってしまったものと思われる。

解決法

もともとMBFPDFではマジッククォート機能を使用しておらず、一時的に機能を無効化するために関数を呼び出しているだけであるため、この関数をそのままコメントアウトさせると正常に動作する。

具体的には「mbfpdf.php」をテキストエディタで開き、下記の部分をコメントアウトする。

465  //  $mqr=get_magic_quotes_runtime();
466  //  set_magic_quotes_runtime(0);

489  //  set_magic_quotes_runtime($mqr);

以上で正常に動作しない場合は、さらに別の問題が発生しているものと思われる。

備考

上記の問題はFPDFを使用している場合でも起こりうるかもしれない。
その場合は「fpdf.php」を開き、「set_magic_quotes_runtime」を呼び出している行をすべてコメントアウトすれば解決するかもしれない。