Windows版 XAMPPのPHP8で「GDライブラリ」を使ったプログラムがエラーとなる時の対処法

Windows版のPHP8対応のXAMMPでは、GDライブラリの名称が変更になりました。GDライブラリを使用したプログラムでエラーが表示される場合には、php.iniを編集することで解決することができます。

XAMPPはローカルマシンにサーバー環境を構築できるシステムです。PHPやデータベースの学習、WordPressなどのCMSシステムをサーバーで運用する前に試してみるなど用途は多岐にわたり、使用している方も多いのではないでしょうか。

現在PHPは7から8への移行が始まっており、自分の契約しているレンタルサーバーもPHP8の提供を開始し、近い将来PHP7の提供は終了するものと思われます。それに合わせておきたいと考え、自分のローカル環境もPHP8に変更しました。

データのコピーが終了し動作確認をしたところ、大抵のものは問題なかったのですが、GDを使ったPHPプログラムではエラーが出てしまいました。調べてみるとWindows版XAMPPのPHP8ではGDライブラリの名称が変更になったとのことなので、それを解決した手順をまとめてみます。

GDライブラリを使ったプログラムのエラー

XAMPPを起動してgd_info()を呼び出してみた時のエラー表示です。

Fatal error: Uncaught Error: Call to undefined function gd_info() in C:\xampp\htdocs\・・・

「対応できない致命的なエラー C:\xampp\htdoccs\・・・ で未定義関数 gd_info() を呼び出しています」

そんな関数ありませんよと。phpのコードは以下の通りです。


<?php
	print "<pre>";
	print_r( gd_info() );
	print "</pre>";
?>
 

いままで正常に動作していたファイルアップロードプログラムも、

Fatal error: Uncaught Error: Call to undefined function ImageCreateFromJPEG() in C:\xampp\htdocs\・・・

とエラー表示されます。この場合はImageCreateFromJPEG()なんて関数はありませんよだと。

gd_info()もImageCreateFromJPEG()もGDライブラリの関数です。

php.iniを変更し再起動する

Windows では、php_gd2.dll の名前が、php_gd.dll に変更されました。php.net公式ページ

Windowsのライブラリ名が変更になった (公式ページの中間あたり)

C:\xampp\phpフォルダ内のphp.iniをテキストエディタで開き、該当箇所を変更して保存。XAMPPを再起動します。php.iniの該当行は919行あたりにあります。(念のため、php.iniはコピーして別名で保存しておきます)

XAMPPのバージョンによっては、「extension=gd」がコメントアウトしてある場合もあるようです。もし、「extension=gd2」となっている場合はこれを「extension=gd」に変更し、「;extension=gd」とコメントアウトされている場合にはコメントを外し、「extension=gd」とします。


// php.iniの該当行は919行あたりにあります
extension=fileinfo
;extension=gd  // コメントアウトされている場合には
 ↓
extension=fileinfo
extension=gd  // ;を削除(コメントアウトを解除します)


extension=fileinfo
extension=gd2  // extension=gd2 となっている場合には
 ↓
extension=fileinfo
extension=gd  // extension=gd と書きかえます

変更したら上書き保存し、XAMPPを再起動します。

確認

再起動したら、GDライブラリが使用可能かテストします。

先のphp_info()で確認したところ。

Array
(
    [GD Version] => bundled (2.1.0 compatible)
    [FreeType Support] => 1
    [FreeType Linkage] => with freetype
    [GIF Read Support] => 1
    [GIF Create Support] => 1
    [JPEG Support] => 1
    [PNG Support] => 1
    [WBMP Support] => 1
    [XPM Support] => 1
    [XBM Support] => 1
    [WebP Support] => 1
    [BMP Support] => 1
    [AVIF Support] => 1
    [TGA Read Support] => 1
    [JIS-mapped Japanese Font Support] => 
)

Engin AkyurtによるPixabayからの画像

PC-Life,PHP,Ubuntuxampp

Posted by pman-bros