Help us understand the problem. What is going on with this article?

PHPの拡張モジュールGDが動くまでの試行錯誤

More than 3 years have passed since last update.

PHPの拡張モジュールGDが動くまでの試行錯誤

Linux系OSへPHP拡張モジュールのGD(画像変換モジュール)をインストールするだけで結構はまったので試行錯誤をメモ。
PHPの拡張モジュールを入れる際の確認ポイントの参考にしてみるのもいいかも。

GDのインストール確認

phpinfo() の ConfigureCommand 項目をみると

--without-gd

になっている。
GD欄も存在しないので入っていないらしい。

phpinfo.php
<? phpinfo(); ?>

以下のコマンドでも確認できます。

php -m | grep gd

GDをインストールしてみる

yum install php-gd

失敗。
失敗する原因として、PHPのバージョンに合っていない、他の関連モジュールの影響で入れられないといった原因が考えられます。

インストールできるGDが他にないか確認

yum list | grep gd

php54-php-gd.x86_64があった。
x86_64, amd64 は64ビット i386, i686, x86 は32ビット

remiリポジトリからインストール。
「yum」のデフォルトリポジトリのパッケージが古く、最新版のパッケージをインストールしたい場合には、RPMコマンドを使って外部リポジトリを追加します。「remi」はよく使われる外部リポジトリのひとつです。

yum install php54-php-gd.x86_64 --enablerepo=remi

成功。

GDのインストール確認

/etc/php.ini に以下を追記して、Apacheを再起動。

extension=gd.so

うまく動かない。

入れなおしてみたり

yum remove php54-php-gd.x86_64
yum install php54-php-gd.x86_64

効果なし。
yum remove を行う場合は、他のモジュールが使用している関連モジュールを消さないように気をつけます。

/etc/php.d/gd.ini を作ってみてもうまく動かない。

拡張モジュールの確認

ls /usr/lib64/php/modules/gd.so

拡張モジュールがなかった。ありがち。

拡張モジュールを探す旅にでる

色々苦戦している人を発見する。
http://xiaoxia.exblog.jp/6226189

rpmパッケージの問題?

rpm -qa | grep gd
php54-php-gd-5.4.39-1.el6.remi.x86_64
gd-2.0.35-11.el6.i686
gd-2.0.35-11.el6.x86_64
gd-progs-2.0.35-11.el6.x86_64
gd-last-2.1.1-1.el6.remi.x86_64

うーむ、パッケージは問題なさそう。。

gd.so がどこにあるか探す

find /usr/ -name gd.so

/usr/lib64/libgd.so.3.0.0 があったので、ショートカットリンク作成

ln -s /usr/lib64/libgd.so.3.0.0 gd.so

php -m | grep gd
PHP Warning: PHP Startup: Invalid library (maybe not a PHP library) 'gd.so' in Unknown on line 0

PHPのライブラリじゃないよって怒られて、上手くいかない。

インストールした場所を調べる。

rpm -ql php54-php-gd.x86_64
/opt/remi/php54/root/usr/lib64/php/modules/gd.so

いた。なんでそんなところに。。
仕方がないのでショートカットリンク作成

ln -s /opt/remi/php54/root/usr/lib64/php/modules/gd.so /usr/lib64/php/modules/gd.so

Apacheを再起動したら動きました。

まとめ

  1. phpinfo() の ConfigureCommand 項目は割とあてにならない
  2. 動かないときは拡張モジュールを確認する
  3. ショートカットリンクでも動く

GDなどの拡張モジュールがインストールできなくて困っている人の助けになれば幸いです。

astronela
現職:プロダクトオーナー 経歴:WEBアプリ開発(JAVA/PHP) バッチ開発(Linux/DOS) スマホアプリ開発(Android/iOS) AWSインフラ構築 プロジェクトマネージャー
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away