Windows版 XAMPPのPHP8で「GDライブラリ」を使ったプログラムがエラーとなる時の対処法
Windows版XAMMPのGDライブラリを使っていて、「Fatal error: Uncaught Error: Call to undefined function GD関数名 in…」というエラーが出るときの対処方法です。
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公式ページ
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からの画像