PHP GDのbundled版・非bundled版の挙動の違いの検証 その7(結果編)
2020年09月01日

前回の続き

1番目の記事で書いたケース2(PHP7.3)のimagecreatefromjpeg関数で破損した画像を開いた際にfalseを返してくるはずが、
なぜかリソースIDを返してくる件を確認するためにテスト用のプログラムを用意した。

まずは壊れた画像ファイルの用意から。
今回はお手軽に画像ファイルの先頭30,000バイトを抜き出して壊れた画像ファイルを作成することにした。

PHPコード

$from = dirname(__FILE__) . "/original.JPG";
$to = dirname(__FILE__) . "/break.JPG";

file_put_contents($to, file_get_contents($from, false, NULL, 0, 30000));

元画像

生成した破損画像

生成した破損画像をWindowsフォトビューアーで見た場合



そして次は肝心の確認用プログラム。

PHPコード

$path = dirname(__FILE__) . "/break.JPG";

echo "----------------------------------------\r\n";
echo "■環境\r\n";
echo "PHP:" . phpversion() . "\r\n";
$gd_data = gd_info();
echo "GD:" . $gd_data["GD Version"] . "\r\n";
echo "\r\n";


echo "★gd.jpeg_ignore_warning = 0\r\n";
ini_set("gd.jpeg_ignore_warning", "0");
echo "■Warning\r\n";
$data = imagecreatefromjpeg($path);
echo "\r\n";

echo "■結果\r\n";
echo ($data !== false ? "OK" : "NG") . "\r\n";
echo "\r\n";

echo "★gd.jpeg_ignore_warning = 1\r\n";
ini_set("gd.jpeg_ignore_warning", "1");
echo "■Warning\r\n";
$data = imagecreatefromjpeg($path);
echo "\r\n";

echo "■結果\r\n";
echo ($data !== false ? "OK" : "NG") . "\r\n";

実行結果例(ソースからコンパイルしたPHP5.3にて実行)

----------------------------------------
■環境
PHP:5.3.29
GD:bundled (2.1.0 compatible)

★gd.jpeg_ignore_warning = 0
■Warning

Warning: imagecreatefromjpeg(): gd-jpeg, libjpeg: recoverable error: Premature end of JPEG file
in /usr/local/lib/test.php on line 18

Warning: imagecreatefromjpeg(): '/usr/local/lib/break.JPG' is not a valid JPEG file in /usr/local/lib/test.php on line 18

■結果
NG

★gd.jpeg_ignore_warning = 1
■Warning

■結果
OK


このコードがやっていることは

  • PHPのバージョンとGDのバージョンを表示する。
  • imagecreatefromjpeg関数で破損画像を開き、その結果falseが返ってくれば「NG」を表示し、false出なければ「OK」を表示する。
    • その際にgd.jpeg_ignore_warningという警告を無視するかどうかの設定を「0:無視しない」と「1:無視する」のそれぞれで実行する。

というもの。

gd.jpeg_ignore_warningは公式のマニュアルを見ると

https://www.php.net/manual/ja/image.configuration.php
gd.jpeg_ignore_warning bool
    libjpeg(-turbo) が出す警告(エラーではない)を無視します。

と書かれている。
imagecreatefromjpeg関数のマニュアルの方では特には触れられていないが、
コンパイルしたPHP5.3の環境で試すと
設定値を0(無視しない)にした場合 → Warningを出しつつfalseが返ってくる
設定値を1(無視する)にした場合 → Warningを出さずにリソースIDが返ってくる
という挙動になっているので、破損画像が来た際に気にせず処理してくれるモードのようなものなのだと思われる。

そして7.1から「gd.jpeg_ignore_warning のデフォルト値が 0 から 1 に変わりました。 」という変更が行われたようなので、
今回確認したケース2(PHP7.3)でリソースIDが返ってきてしまう件はこのデフォルト値変更によるものかと思ってしまうところだが、実際にはそうではなかった。

細かい実行結果は後にして先に検証結果をまとめると以下のようになった。

確認した環境

5.3 5.4 5.5 5.6 7.0 7.1 7.2 7.3 7.4
ソースをコンパイル 実施 実施 実施 実施 実施 実施 実施 実施 実施
remiリポジトリ × 実施 実施 実施 実施 実施 実施 実施 実施
iusリポジトリ × × 実施 実施 実施 実施 実施 実施 実施
amazon-linux-extrasリポジトリ × × × × × × 実施 実施 実施
AppStreamリポジトリ × × × × × × 実施 実施 ×
CentOS6標準 実施 × × × × × × × ×
CentOS7標準 × 実施 × × × × × × ×
AmazonLinux標準 実施 × × × × × × × ×
AmazonLinux2標準 × 実施 × × × × × × ×

結果

表にすると横幅がキツイが、このようになった。

5.3 5.4 5.5 5.6 7.0 7.1 7.2 7.3 7.4
bundled/gd.jpeg_ignore_warningの値 B 0 1 B 0 1 B 0 1 B 0 1 B 0 1 B 0 1 B 0 1 B 0 1 B 0 1
ソースをコンパイル yes NG
[W]
OK yes NG
[W]
OK yes NG
[W]
OK yes NG
[W]
OK yes NG
[W]
OK yes NG
[W]
OK yes NG
[W]
OK yes NG
[W]
OK yes NG
[W]
OK
remiリポジトリ × yes NG
[W]
OK
[W]
no OK
[W]
OK no OK
[W]
OK no OK
[W]
OK no OK
[W]
OK no OK
[W]
OK no OK
[W]
OK no OK
[W]
OK
iusリポジトリ × × yes NG
[W]
OK
[W]
yes NG
[W]
OK
[W]
yes NG
[W]
OK
[W]
yes NG
[W]
OK
[W]
yes NG
[W]
OK yes NG
[W]
OK yes NG
[W]
OK
amazon-linux-extrasリポジトリ × × × × × × yes NG
[W]
OK yes NG
[W]
OK yes NG
[W]
OK
AppStreamリポジトリ × × × × × × no OK
[W]
OK no OK
[W]
OK ×
CentOS6標準 yes NG
[W]
OK
[W]
× × × × × × × ×
CentOS7標準 × yes NG
[W]
OK
[W]
× × × × × × ×
AmazonLinux標準 yes NG
[W]
OK
[W]
× × × × × × × ×
AmazonLinux2標準 × yes NG
[W]
OK
[W]
× × × × × × ×


■B列の値
yes = Bundled版のGD
no = 非Bundled版のGD

■0・1列の値
NG = falseが返ってきた場合
OK = リソースIDが返ってきた場合
[W] = Warningが出力された場合


コンパイル版とWarningの挙動が違うところは赤文字にした。
戻り値が違うところは背景色を黄色にした。
この結果を見ると

remiリポジトリ

5.4はコンパイル版と同様にfalseを返してきたが、それ以降は常にリソースIDを返すようになった。
ただし5.4は「gd.jpeg_ignore_warning = 1」の場合にWarningが出力されてしまう。

iusリポジトリ

返却値はコンパイル版と同様。
7.1以前は「gd.jpeg_ignore_warning = 1」の場合にWarningが出力されてしまっていたが、それ以降はコンパイル版と同様の挙動。

amazon-linux-extrasリポジトリ

コンパイル版と同じ挙動。

AppStreamリポジトリ

remiリポジトリの5.5以降と同様に常にリソースIDを返してくる。

CentOS6標準、CentOS7標準、AmazonLinux標準、AmazonLinux2標準

remiリポジトリの5.4以前と同じ挙動。


という感じになる。
この挙動の違いはbundled版かそうでないかで
bundled版 = false or リソースIDを返却
非bundled版 = 常にリソースIDを返却
ということなんだと思うが、返却値が変わってしまうとそれに応じた処理がPHPのインストールの仕方によって動いたり動かなかったりしてしまうため、
これはなかなかオソロシイ・・・。
自分で書いたコードであればImageMagicを使うコードに置き換えたりすることができるが、
ライブラリーを導入したりするとGD関数を使ってたりするのでGDを使わないというのもなかなかキビシイところ。
そしてこれが果たしてGDだけの問題なのか?他のPHPの拡張機能も似たようなことは起こらないのか?というのが気になるところ。

あと、7.1以前だとWarningの出具合がコンパイル版と違うのもちょっと気になるところ。
独自に何か手を入れている関係で一部の処理を取り込みきれていないとかだろうか・・・?

一応ダメ元でremiリポジトリ環境のphp.iniをいじって

vi /opt/remi/php54/root/etc/php.ini
gd.jpeg_ignore_warning = 1

php54 -i | grep gd.jpeg_ignore_warning
gd.jpeg_ignore_warning => 1 => 1

という感じでデフォルト値を変えてみたが変化はなかった。


個人的にまとめると、

  • Warningは出てしまうが、CentOS8以外はOS標準バージョンを使用するのが無難なところ。
    • Warningはimagecreatefromjpegを呼び出す際に@を付けて呼べば出なくなるので、
      仮に導入したライブラリー内で使われていたとしても@を付けるパッチをあてるだけで済む。
    • バージョンが古くなってしまうのがネックだが、OS側で長期サポートしてくれるのでいろいろ安心。
      仮に新しいバージョンを導入した場合にサポートが切れないうちにバージョンアップするための予算をお客さんが組んでくれるかというと・・・。
    • CentOS8は標準で非Bundled版のGDが入ってしまうので、iusリポジトリから別途インストールするのが良さそうか?
  • もしも新しいバージョンのPHPを使いたい場合はソースをコンパイルするか、amazon-linux-extrasリポジトリ、iusリポジトリからインストールする。
    • ソースをコンパイルするのが一番確実そうだが、やはりメンテの手間は一番かかる。
    • iusリポジトリは7.1以前だとWarningの挙動が違っていたのが気になるところだが、
      それよりも新しいバージョンではコンパイル版と同じ挙動なので、今後は大丈夫なのかもしれない・・・?
    • AmazonLinux2を使うのならばamazon-linux-extrasリポジトリからインストールするのが一番良さそう。
  • remiリポジトリからインストールしたい場合は開発時から「gd.jpeg_ignore_warning = 1」の状態にしておく。
    • 今回確認したのはimagecreatefromjpeg関数だけだが、ほかの関数でどうなるのかは不明なので、本番環境で何も起こらないことを祈り続ける。
    • 導入したライブラリーが非Bundle版のGDな関係でうまく動かない場合はimagecreatefromjpegを呼んでいるところ周辺の処理にパッチをあてて何とかしのぐか、別のライブラリーを探し出す。

と思うところである。

あと気になるところとしては

  • ソースをコンパイルする際に非BundledなGDをどうやれば作れるのか?
    • phpizeでGDだけコンパイルしてみたがBundled版になってしまった。
      もう少し研究が必要。
  • Bundled版、非Bundled版問題は他の拡張機能でも起こるのか?
    • PHP GDのソースを読むとBundled版かどうかで処理が変わっているので、ソースをBundledとかの単語で探しに行けば多少わかるかもしれない。
    • あとはマニュアルのページに
      https://www.php.net/manual/ja/image.installation.php「PHPにバンドルされている推奨のGDライブラリを使用するには」というように推奨云々書かれているページを見つけに行けばわかるかもしれない。
    • 手元のもろもろ拡張機能を入れたPHP実行環境でphpinfoを実行してみるとeregセクションに「Regex Library:Bundled library enabled」とあるので、何かあるかも・・・?
ということがあるので、今後調べていけたらと思う。


これにて今回の検証終わり。

最後に各環境での実行結果を列挙しておく。

ソースコンパイル環境

PHP5.3

/usr/local/lib/php5.3/bin/php -f test.php
----------------------------------------
■環境
PHP:5.3.29
GD:bundled (2.1.0 compatible)

★gd.jpeg_ignore_warning = 0
■Warning

Warning: imagecreatefromjpeg(): gd-jpeg, libjpeg: recoverable error: Premature end of JPEG file
in /usr/local/lib/test.php on line 18

Warning: imagecreatefromjpeg(): '/usr/local/lib/break.JPG' is not a valid JPEG file in /usr/local/lib/test.php on line 18

■結果
NG

★gd.jpeg_ignore_warning = 1
■Warning

■結果
OK

PHP5.4

/usr/local/lib/php5.4/bin/php -f test.php
----------------------------------------
■環境
PHP:5.4.45
GD:bundled (2.1.0 compatible)

★gd.jpeg_ignore_warning = 0
■Warning

Warning: imagecreatefromjpeg(): gd-jpeg, libjpeg: recoverable error: Premature end of JPEG file
in /usr/local/lib/test.php on line 18

Warning: imagecreatefromjpeg(): '/usr/local/lib/break.JPG' is not a valid JPEG file in /usr/local/lib/test.php on line 18

■結果
NG

★gd.jpeg_ignore_warning = 1
■Warning

■結果
OK

PHP5.5

/usr/local/lib/php5.5/bin/php -f test.php
----------------------------------------
■環境
PHP:5.5.38
GD:bundled (2.1.0 compatible)

★gd.jpeg_ignore_warning = 0
■Warning

Warning: imagecreatefromjpeg(): gd-jpeg, libjpeg: recoverable error: Premature end of JPEG file
in /usr/local/lib/test.php on line 18

Warning: imagecreatefromjpeg(): '/usr/local/lib/break.JPG' is not a valid JPEG file in /usr/local/lib/test.php on line 18

■結果
NG

★gd.jpeg_ignore_warning = 1
■Warning

■結果
OK

PHP5.6

/usr/local/lib/php5.6/bin/php -f test.php
----------------------------------------
■環境
PHP:5.6.40
GD:bundled (2.1.0 compatible)

★gd.jpeg_ignore_warning = 0
■Warning

Warning: imagecreatefromjpeg(): gd-jpeg, libjpeg: recoverable error: Premature end of JPEG file
in /usr/local/lib/test.php on line 18

Warning: imagecreatefromjpeg(): '/usr/local/lib/break.JPG' is not a valid JPEG file in /usr/local/lib/test.php on line 18

■結果
NG

★gd.jpeg_ignore_warning = 1
■Warning

■結果
OK

PHP7.0

/usr/local/lib/php7.0/bin/php -f test.php
----------------------------------------
■環境
PHP:7.0.33
GD:bundled (2.1.0 compatible)

★gd.jpeg_ignore_warning = 0
■Warning

Warning: imagecreatefromjpeg(): gd-jpeg, libjpeg: recoverable error: Premature end of JPEG file
in /usr/local/lib/test.php on line 18

Warning: imagecreatefromjpeg(): '/usr/local/lib/break.JPG' is not a valid JPEG file in /usr/local/lib/test.php on line 18

■結果
NG

★gd.jpeg_ignore_warning = 1
■Warning

■結果
OK

PHP7.1

/usr/local/lib/php7.1/bin/php -f test.php
----------------------------------------
■環境
PHP:7.1.33
GD:bundled (2.1.0 compatible)

★gd.jpeg_ignore_warning = 0
■Warning

Warning: imagecreatefromjpeg(): gd-jpeg, libjpeg: recoverable error: Premature end of JPEG file
in /usr/local/lib/test.php on line 18

Warning: imagecreatefromjpeg(): '/usr/local/lib/break.JPG' is not a valid JPEG file in /usr/local/lib/test.php on line 18

■結果
NG

★gd.jpeg_ignore_warning = 1
■Warning

■結果
OK

PHP7.2

/usr/local/lib/php7.2/bin/php -f test.php
----------------------------------------
■環境
PHP:7.2.32
GD:bundled (2.1.0 compatible)

★gd.jpeg_ignore_warning = 0
■Warning

Warning: imagecreatefromjpeg(): gd-jpeg, libjpeg: recoverable error: Premature end of JPEG file
in /usr/local/lib/test.php on line 18

Warning: imagecreatefromjpeg(): '/usr/local/lib/break.JPG' is not a valid JPEG file in /usr/local/lib/test.php on line 18

■結果
NG

★gd.jpeg_ignore_warning = 1
■Warning

■結果
OK

PHP7.3

/usr/local/lib/php7.3/bin/php -f test.php
----------------------------------------
■環境
PHP:7.3.20
GD:bundled (2.1.0 compatible)

★gd.jpeg_ignore_warning = 0
■Warning

Warning: imagecreatefromjpeg(): gd-jpeg, libjpeg: recoverable error: Premature end of JPEG file
in /usr/local/lib/test.php on line 18

Warning: imagecreatefromjpeg(): '/usr/local/lib/break.JPG' is not a valid JPEG file in /usr/local/lib/test.php on line 18

■結果
NG

★gd.jpeg_ignore_warning = 1
■Warning

■結果
OK

PHP7.4

/usr/local/lib/php7.4/bin/php -f test.php
----------------------------------------
■環境
PHP:7.4.8
GD:bundled (2.1.0 compatible)

★gd.jpeg_ignore_warning = 0
■Warning

Warning: imagecreatefromjpeg(): gd-jpeg, libjpeg: recoverable error: Premature end of JPEG file
in /usr/local/lib/test.php on line 18

Warning: imagecreatefromjpeg(): '/usr/local/lib/break.JPG' is not a valid JPEG file in /usr/local/lib/test.php on line 18

■結果
NG

★gd.jpeg_ignore_warning = 1
■Warning

■結果
OK

remiリポジトリ環境

PHP5.4

php54 -f test.php
----------------------------------------
■環境
PHP:5.4.45
GD:bundled (2.1.0 compatible)

★gd.jpeg_ignore_warning = 0
■Warning
PHP Warning: imagecreatefromjpeg(): gd-jpeg, libjpeg: recoverable error: Premature end of JPEG file
in /usr/local/lib/test.php on line 18

Warning: imagecreatefromjpeg(): gd-jpeg, libjpeg: recoverable error: Premature end of JPEG file
in /usr/local/lib/test.php on line 18
PHP Warning: imagecreatefromjpeg(): '/usr/local/lib/break.JPG' is not a valid JPEG file in /usr/local/lib/test.php on line 18

Warning: imagecreatefromjpeg(): '/usr/local/lib/break.JPG' is not a valid JPEG file in /usr/local/lib/test.php on line 18

■結果
NG

★gd.jpeg_ignore_warning = 1
■Warning
PHP Notice: imagecreatefromjpeg(): gd-jpeg, libjpeg: recoverable error: Premature end of JPEG file
in /usr/local/lib/test.php on line 28

Notice: imagecreatefromjpeg(): gd-jpeg, libjpeg: recoverable error: Premature end of JPEG file
in /usr/local/lib/test.php on line 28

■結果
OK

PHP5.5

php55 -f test.php
----------------------------------------
■環境
PHP:5.5.38
GD:2.2.5

★gd.jpeg_ignore_warning = 0
■Warning
PHP Parse error: imagecreatefromjpeg(): gd-jpeg, libjpeg: recoverable error: Premature end of JPEG file
in /usr/local/lib/test.php on line 18

Parse error: imagecreatefromjpeg(): gd-jpeg, libjpeg: recoverable error: Premature end of JPEG file
in /usr/local/lib/test.php on line 18

■結果
OK

★gd.jpeg_ignore_warning = 1
■Warning

■結果
OK

PHP5.6

php56 -f test.php
----------------------------------------
■環境
PHP:5.6.40
GD:2.3.0

★gd.jpeg_ignore_warning = 0
■Warning
PHP Warning: imagecreatefromjpeg(): gd-jpeg, libjpeg: recoverable error: Premature end of JPEG file
in /usr/local/lib/test.php on line 18

Warning: imagecreatefromjpeg(): gd-jpeg, libjpeg: recoverable error: Premature end of JPEG file
in /usr/local/lib/test.php on line 18

■結果
OK

★gd.jpeg_ignore_warning = 1
■Warning

■結果
OK

PHP7.0

php70 -f test.php
----------------------------------------
■環境
PHP:7.0.33
GD:2.3.0

★gd.jpeg_ignore_warning = 0
■Warning
PHP Warning: imagecreatefromjpeg(): gd-jpeg, libjpeg: recoverable error: Premature end of JPEG file
in /usr/local/lib/test.php on line 18

Warning: imagecreatefromjpeg(): gd-jpeg, libjpeg: recoverable error: Premature end of JPEG file
in /usr/local/lib/test.php on line 18

■結果
OK

★gd.jpeg_ignore_warning = 1
■Warning

■結果
OK

PHP7.1

php71 -f test.php
----------------------------------------
■環境
PHP:7.1.33
GD:2.3.0

★gd.jpeg_ignore_warning = 0
■Warning
PHP Warning: imagecreatefromjpeg(): gd-jpeg, libjpeg: recoverable error: Premature end of JPEG file
in /usr/local/lib/test.php on line 18

Warning: imagecreatefromjpeg(): gd-jpeg, libjpeg: recoverable error: Premature end of JPEG file
in /usr/local/lib/test.php on line 18

■結果
OK

★gd.jpeg_ignore_warning = 1
■Warning

■結果
OK

PHP7.2

php72 -f test.php
----------------------------------------
■環境
PHP:7.2.33
GD:2.3.0

★gd.jpeg_ignore_warning = 0
■Warning
PHP Warning: imagecreatefromjpeg(): gd-jpeg, libjpeg: recoverable error: Premature end of JPEG file
in /usr/local/lib/test.php on line 18

Warning: imagecreatefromjpeg(): gd-jpeg, libjpeg: recoverable error: Premature end of JPEG file
in /usr/local/lib/test.php on line 18

■結果
OK

★gd.jpeg_ignore_warning = 1
■Warning

■結果
OK

PHP7.3

php73 -f test.php
----------------------------------------
■環境
PHP:7.3.21
GD:2.3.0

★gd.jpeg_ignore_warning = 0
■Warning
PHP Warning: imagecreatefromjpeg(): gd-jpeg, libjpeg: recoverable error: Premature end of JPEG file
in /usr/local/lib/test.php on line 18

Warning: imagecreatefromjpeg(): gd-jpeg, libjpeg: recoverable error: Premature end of JPEG file
in /usr/local/lib/test.php on line 18

■結果
OK

★gd.jpeg_ignore_warning = 1
■Warning

■結果
OK

PHP7.4

php74 -f test.php
----------------------------------------
■環境
PHP:7.4.9
GD:2.3.0

★gd.jpeg_ignore_warning = 0
■Warning
PHP Warning: imagecreatefromjpeg(): gd-jpeg, libjpeg: recoverable error: Premature end of JPEG file
in /usr/local/lib/test.php on line 18

Warning: imagecreatefromjpeg(): gd-jpeg, libjpeg: recoverable error: Premature end of JPEG file
in /usr/local/lib/test.php on line 18

■結果
OK

★gd.jpeg_ignore_warning = 1
■Warning

■結果
OK

iusリポジトリ環境

PHP5.5

php -f test.php
----------------------------------------
■環境
PHP:5.5.38
GD:bundled (2.1.0 compatible)

★gd.jpeg_ignore_warning = 0
■Warning
PHP Warning: imagecreatefromjpeg(): gd-jpeg, libjpeg: recoverable error: Premature end of JPEG file
in /usr/local/lib/test.php on line 18

Warning: imagecreatefromjpeg(): gd-jpeg, libjpeg: recoverable error: Premature end of JPEG file
in /usr/local/lib/test.php on line 18
PHP Warning: imagecreatefromjpeg(): '/usr/local/lib/break.JPG' is not a valid JPEG file in /usr/local/lib/test.php on line 18

Warning: imagecreatefromjpeg(): '/usr/local/lib/break.JPG' is not a valid JPEG file in /usr/local/lib/test.php on line 18

■結果
NG

★gd.jpeg_ignore_warning = 1
■Warning
PHP Notice: imagecreatefromjpeg(): gd-jpeg, libjpeg: recoverable error: Premature end of JPEG file
in /usr/local/lib/test.php on line 28

Notice: imagecreatefromjpeg(): gd-jpeg, libjpeg: recoverable error: Premature end of JPEG file
in /usr/local/lib/test.php on line 28

■結果
OK

PHP5.6

php -f test.php
----------------------------------------
■環境
PHP:5.6.40
GD:bundled (2.1.0 compatible)

★gd.jpeg_ignore_warning = 0
■Warning
PHP Warning: imagecreatefromjpeg(): gd-jpeg, libjpeg: recoverable error: Premature end of JPEG file
in /usr/local/lib/test.php on line 18

Warning: imagecreatefromjpeg(): gd-jpeg, libjpeg: recoverable error: Premature end of JPEG file
in /usr/local/lib/test.php on line 18
PHP Warning: imagecreatefromjpeg(): '/usr/local/lib/break.JPG' is not a valid JPEG file in /usr/local/lib/test.php on line 18

Warning: imagecreatefromjpeg(): '/usr/local/lib/break.JPG' is not a valid JPEG file in /usr/local/lib/test.php on line 18

■結果
NG

★gd.jpeg_ignore_warning = 1
■Warning
PHP Notice: imagecreatefromjpeg(): gd-jpeg, libjpeg: recoverable error: Premature end of JPEG file
in /usr/local/lib/test.php on line 28

Notice: imagecreatefromjpeg(): gd-jpeg, libjpeg: recoverable error: Premature end of JPEG file
in /usr/local/lib/test.php on line 28

■結果
OK

PHP7.0

php -f test.php
----------------------------------------
■環境
PHP:7.0.33
GD:bundled (2.1.0 compatible)

★gd.jpeg_ignore_warning = 0
■Warning
PHP Warning: imagecreatefromjpeg(): gd-jpeg, libjpeg: recoverable error: Premature end of JPEG file
in /usr/local/lib/test.php on line 18

Warning: imagecreatefromjpeg(): gd-jpeg, libjpeg: recoverable error: Premature end of JPEG file
in /usr/local/lib/test.php on line 18
PHP Warning: imagecreatefromjpeg(): '/usr/local/lib/break.JPG' is not a valid JPEG file in /usr/local/lib/test.php on line 18

Warning: imagecreatefromjpeg(): '/usr/local/lib/break.JPG' is not a valid JPEG file in /usr/local/lib/test.php on line 18

■結果
NG

★gd.jpeg_ignore_warning = 1
■Warning
PHP Notice: imagecreatefromjpeg(): gd-jpeg, libjpeg: recoverable error: Premature end of JPEG file
in /usr/local/lib/test.php on line 28

Notice: imagecreatefromjpeg(): gd-jpeg, libjpeg: recoverable error: Premature end of JPEG file
in /usr/local/lib/test.php on line 28

■結果
OK

PHP7.1

php -f test.php
----------------------------------------
■環境
PHP:7.1.33
GD:bundled (2.1.0 compatible)

★gd.jpeg_ignore_warning = 0
■Warning
PHP Warning: imagecreatefromjpeg(): gd-jpeg, libjpeg: recoverable error: Premature end of JPEG file
in /usr/local/lib/test.php on line 18

Warning: imagecreatefromjpeg(): gd-jpeg, libjpeg: recoverable error: Premature end of JPEG file
in /usr/local/lib/test.php on line 18
PHP Warning: imagecreatefromjpeg(): '/usr/local/lib/break.JPG' is not a valid JPEG file in /usr/local/lib/test.php on line 18

Warning: imagecreatefromjpeg(): '/usr/local/lib/break.JPG' is not a valid JPEG file in /usr/local/lib/test.php on line 18

■結果
NG

★gd.jpeg_ignore_warning = 1
■Warning
PHP Notice: imagecreatefromjpeg(): gd-jpeg, libjpeg: recoverable error: Premature end of JPEG file
in /usr/local/lib/test.php on line 28

Notice: imagecreatefromjpeg(): gd-jpeg, libjpeg: recoverable error: Premature end of JPEG file
in /usr/local/lib/test.php on line 28

■結果
OK

PHP7.2

php -f test.php
----------------------------------------
■環境
PHP:7.2.31
GD:bundled (2.1.0 compatible)

★gd.jpeg_ignore_warning = 0
■Warning
PHP Warning: imagecreatefromjpeg(): gd-jpeg, libjpeg: recoverable error: Premature end of JPEG file
in /usr/local/lib/test.php on line 18

Warning: imagecreatefromjpeg(): gd-jpeg, libjpeg: recoverable error: Premature end of JPEG file
in /usr/local/lib/test.php on line 18
PHP Warning: imagecreatefromjpeg(): '/usr/local/lib/break.JPG' is not a valid JPEG file in /usr/local/lib/test.php on line 18

Warning: imagecreatefromjpeg(): '/usr/local/lib/break.JPG' is not a valid JPEG file in /usr/local/lib/test.php on line 18

■結果
NG

★gd.jpeg_ignore_warning = 1
■Warning

■結果
OK

PHP7.3

php -f test.php
----------------------------------------
■環境
PHP:7.3.19
GD:bundled (2.1.0 compatible)

★gd.jpeg_ignore_warning = 0
■Warning
PHP Warning: imagecreatefromjpeg(): gd-jpeg, libjpeg: recoverable error: Premature end of JPEG file
in /usr/local/lib/test.php on line 18

Warning: imagecreatefromjpeg(): gd-jpeg, libjpeg: recoverable error: Premature end of JPEG file
in /usr/local/lib/test.php on line 18
PHP Warning: imagecreatefromjpeg(): '/usr/local/lib/break.JPG' is not a valid JPEG file in /usr/local/lib/test.php on line 18

Warning: imagecreatefromjpeg(): '/usr/local/lib/break.JPG' is not a valid JPEG file in /usr/local/lib/test.php on line 18

■結果
NG

★gd.jpeg_ignore_warning = 1
■Warning

■結果
OK

PHP7.4

php -f test.php
----------------------------------------
■環境
PHP:7.4.7
GD:bundled (2.1.0 compatible)

★gd.jpeg_ignore_warning = 0
■Warning
PHP Warning: imagecreatefromjpeg(): gd-jpeg, libjpeg: recoverable error: Premature end of JPEG file
in /usr/local/lib/test.php on line 18

Warning: imagecreatefromjpeg(): gd-jpeg, libjpeg: recoverable error: Premature end of JPEG file
in /usr/local/lib/test.php on line 18
PHP Warning: imagecreatefromjpeg(): '/usr/local/lib/break.JPG' is not a valid JPEG file in /usr/local/lib/test.php on line 18

Warning: imagecreatefromjpeg(): '/usr/local/lib/break.JPG' is not a valid JPEG file in /usr/local/lib/test.php on line 18

■結果
NG

★gd.jpeg_ignore_warning = 1
■Warning

■結果
OK

Amazon Linux 2 amazon-linux-extrasリポジトリ環境

PHP7.2

php -f test.php
----------------------------------------
■環境
PHP:7.2.31
GD:bundled (2.1.0 compatible)

★gd.jpeg_ignore_warning = 0
■Warning
PHP Warning: imagecreatefromjpeg(): gd-jpeg, libjpeg: recoverable error: Premature end of JPEG file
in /usr/local/lib/test.php on line 18

Warning: imagecreatefromjpeg(): gd-jpeg, libjpeg: recoverable error: Premature end of JPEG file
in /usr/local/lib/test.php on line 18
PHP Warning: imagecreatefromjpeg(): '/usr/local/lib/break.JPG' is not a valid JPEG file in /usr/local/lib/test.php on line 18

Warning: imagecreatefromjpeg(): '/usr/local/lib/break.JPG' is not a valid JPEG file in /usr/local/lib/test.php on line 18

■結果
NG

★gd.jpeg_ignore_warning = 1
■Warning

■結果
OK

PHP7.3

php -f test.php
----------------------------------------
■環境
PHP:7.3.19
GD:bundled (2.1.0 compatible)

★gd.jpeg_ignore_warning = 0
■Warning
PHP Warning: imagecreatefromjpeg(): gd-jpeg, libjpeg: recoverable error: Premature end of JPEG file
in /usr/local/lib/test.php on line 18

Warning: imagecreatefromjpeg(): gd-jpeg, libjpeg: recoverable error: Premature end of JPEG file
in /usr/local/lib/test.php on line 18
PHP Warning: imagecreatefromjpeg(): '/usr/local/lib/break.JPG' is not a valid JPEG file in /usr/local/lib/test.php on line 18

Warning: imagecreatefromjpeg(): '/usr/local/lib/break.JPG' is not a valid JPEG file in /usr/local/lib/test.php on line 18

■結果
NG

★gd.jpeg_ignore_warning = 1
■Warning

■結果
OK

PHP7.4

php -f test.php
----------------------------------------
■環境
PHP:7.4.7
GD:bundled (2.1.0 compatible)

★gd.jpeg_ignore_warning = 0
■Warning
PHP Warning: imagecreatefromjpeg(): gd-jpeg, libjpeg: recoverable error: Premature end of JPEG file
in /usr/local/lib/test.php on line 18

Warning: imagecreatefromjpeg(): gd-jpeg, libjpeg: recoverable error: Premature end of JPEG file
in /usr/local/lib/test.php on line 18
PHP Warning: imagecreatefromjpeg(): '/usr/local/lib/break.JPG' is not a valid JPEG file in /usr/local/lib/test.php on line 18

Warning: imagecreatefromjpeg(): '/usr/local/lib/break.JPG' is not a valid JPEG file in /usr/local/lib/test.php on line 18

■結果
NG

★gd.jpeg_ignore_warning = 1
■Warning

■結果
OK

CentOS8 AppStreamリポジトリ環境

PHP7.2

php -f test.php
----------------------------------------
■環境
PHP:7.2.24
GD:2.2.5

★gd.jpeg_ignore_warning = 0
■Warning
PHP Warning: imagecreatefromjpeg(): gd-jpeg, libjpeg: recoverable error: Premature end of JPEG file
in /var/www/html/test.php on line 18

Warning: imagecreatefromjpeg(): gd-jpeg, libjpeg: recoverable error: Premature end of JPEG file
in /var/www/html/test.php on line 18

■結果
OK

★gd.jpeg_ignore_warning = 1
■Warning

■結果
OK

PHP7.3

php -f test.php
----------------------------------------
■環境
PHP:7.3.5
GD:2.2.5

★gd.jpeg_ignore_warning = 0
■Warning
PHP Warning: imagecreatefromjpeg(): gd-jpeg, libjpeg: recoverable error: Premature end of JPEG file
in /var/www/html/test.php on line 18

Warning: imagecreatefromjpeg(): gd-jpeg, libjpeg: recoverable error: Premature end of JPEG file
in /var/www/html/test.php on line 18

■結果
OK

★gd.jpeg_ignore_warning = 1
■Warning

■結果
OK

CentOS6標準環境

PHP5.3

php -f test.php
----------------------------------------
■環境
PHP:5.3.3
GD:bundled (2.0.34 compatible)

★gd.jpeg_ignore_warning = 0
■Warning
PHP Warning: imagecreatefromjpeg(): gd-jpeg, libjpeg: recoverable error: Premature end of JPEG file
in /var/www/test/test.php on line 16

Warning: imagecreatefromjpeg(): gd-jpeg, libjpeg: recoverable error: Premature end of JPEG file
in /var/www/test/test.php on line 16
PHP Warning: imagecreatefromjpeg(): '/var/www/test/break.JPG' is not a valid JPEG file in /var/www/test/test.php on line 16

Warning: imagecreatefromjpeg(): '/var/www/test/break.JPG' is not a valid JPEG file in /var/www/test/test.php on line 16

■結果
NG

★gd.jpeg_ignore_warning = 1
■Warning
PHP Notice: imagecreatefromjpeg(): gd-jpeg, libjpeg: recoverable error: Premature end of JPEG file
in /var/www/test/test.php on line 26

Notice: imagecreatefromjpeg(): gd-jpeg, libjpeg: recoverable error: Premature end of JPEG file
in /var/www/test/test.php on line 26

■結果
OK

CentOS7標準環境

PHP5.4

php -f test.php
----------------------------------------
■環境
PHP:5.4.16
GD:bundled (2.1.0 compatible)

★gd.jpeg_ignore_warning = 0
■Warning
PHP Warning: imagecreatefromjpeg(): gd-jpeg, libjpeg: recoverable error: Premature end of JPEG file
in /home/php/test.php on line 16

Warning: imagecreatefromjpeg(): gd-jpeg, libjpeg: recoverable error: Premature end of JPEG file
in /home/php/test.php on line 16
PHP Warning: imagecreatefromjpeg(): '/home/php/break.JPG' is not a valid JPEG file in /home/php/test.php on line 16

Warning: imagecreatefromjpeg(): '/home/php/break.JPG' is not a valid JPEG file in /home/php/test.php on line 16

■結果
NG

★gd.jpeg_ignore_warning = 1
■Warning
PHP Notice: imagecreatefromjpeg(): gd-jpeg, libjpeg: recoverable error: Premature end of JPEG file
in /home/php/test.php on line 26

Notice: imagecreatefromjpeg(): gd-jpeg, libjpeg: recoverable error: Premature end of JPEG file
in /home/php/test.php on line 26

■結果
OK

AmazonLinux標準環境

PHP5.3

php -f test.php
----------------------------------------
■環境
PHP:5.3.29
GD:bundled (2.1.0 compatible)

★gd.jpeg_ignore_warning = 0
■Warning
PHP Warning: imagecreatefromjpeg(): gd-jpeg, libjpeg: recoverable error: Premature end of JPEG file
in /var/www/test/test.php on line 16

Warning: imagecreatefromjpeg(): gd-jpeg, libjpeg: recoverable error: Premature end of JPEG file
in /var/www/test/test.php on line 16
PHP Warning: imagecreatefromjpeg(): '/var/www/test/break.JPG' is not a valid JPEG file in /var/www/test/test.php on line 16

Warning: imagecreatefromjpeg(): '/var/www/test/break.JPG' is not a valid JPEG file in /var/www/test/test.php on line 16

■結果
NG

★gd.jpeg_ignore_warning = 1
■Warning
PHP Notice: imagecreatefromjpeg(): gd-jpeg, libjpeg: recoverable error: Premature end of JPEG file
in /var/www/test/test.php on line 26

Notice: imagecreatefromjpeg(): gd-jpeg, libjpeg: recoverable error: Premature end of JPEG file
in /var/www/test/test.php on line 26

■結果
OK

AmazonLinux2標準環境

PHP5.4

php -f test.php
----------------------------------------
■環境
PHP:5.4.16
GD:bundled (2.1.0 compatible)

★gd.jpeg_ignore_warning = 0
■Warning
PHP Warning: imagecreatefromjpeg(): gd-jpeg, libjpeg: recoverable error: Premature end of JPEG file
in /var/www/test/test.php on line 16

Warning: imagecreatefromjpeg(): gd-jpeg, libjpeg: recoverable error: Premature end of JPEG file
in /var/www/test/test.php on line 16
PHP Warning: imagecreatefromjpeg(): '/var/www/test/break.JPG' is not a valid JPEG file in /var/www/test/test.php on line 16

Warning: imagecreatefromjpeg(): '/var/www/test/break.JPG' is not a valid JPEG file in /var/www/test/test.php on line 16

■結果
NG

★gd.jpeg_ignore_warning = 1
■Warning
PHP Notice: imagecreatefromjpeg(): gd-jpeg, libjpeg: recoverable error: Premature end of JPEG file
in /var/www/test/test.php on line 26

Notice: imagecreatefromjpeg(): gd-jpeg, libjpeg: recoverable error: Premature end of JPEG file
in /var/www/test/test.php on line 26

■結果
OK


以上。

書いた人:木本

コメント一覧

コメントはまだありません。

コメントを投稿する

お名前
コメント
Top