以前のバージョンのPHPではgdを有効にする必要があります。

以前のバージョンのPHPではgdを有効にする必要があります。

PHPのバージョンは5.6でかなり古いバージョンです。もう利用apt-get install php5-gdできません。

私はこれを見つけることができますgd.so

/usr/lib/php/20151012/gd.so
/usr/lib/x86_64-linux-gnu/libgd.so.3 -- links to 3.0.0 below
/usr/lib/x86_64-linux-gnu/libgd.so.3.0.0

gd有効にするには、背中でこれらのいずれかを設定する必要があるようです。mods_availablemods_enabled

上記の項目のいずれかに接続するには、共通の場所にエイリアスを使用する必要がありますが、gd.soどこに置く必要があり、どの項目に接続する必要がありますか?

手動で設定するステップバイステップガイドはありますか?

ベストアンサー1

自分でインストールしようとしましたが、gd使用できなくなりました。

$ sudo apt-get install php5-gd
Reading package lists... Done
Building dependency tree
Reading state information... Done
Package php5-gd is not available, but is referred to by another package.
This may mean that the package is missing, has been obsoleted, or
is only available from another source

E: Package 'php5-gd' has no installation candidate

利用可能なものもないようですppa:ondrej/php。これが最善の選択です。

既存のSOがあるため、これをパッチするためにとった手順は次のとおりです。

別のSOが見つかりました。

$ locate gd.so
...
/usr/lib/php/20151012/gd.so
...

PHP 拡張ディレクトリに20131226既存の拡張ディレクトリへのリンクを作成します。

$ cd /usr/lib/php/20131226
$ sudo ln -s /usr/lib/php/20151012/gd.so gd.so

このSOのINIファイルを作成します。

$ cd /etc/php/5.6/mods-available
$ echo -e '; configuration for php common module\n; priority=20\nextension=gd.so' | sudo tee gd.ini
; configuration for php common module
; priority=20
extension=gd.so

モジュールを有効にする:

$ cd /etc/php/5.6/apache2/conf.d
$ sudo ln -s /usr/lib/php/5.6/mods-available/gd.ini 20-gd.ini

Apacheを再起動し、何が起こるかを確認してください。

$ sudo service apache2 restart
$ cat /var/log/apache2/error.log
...
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php/20131226/gd.so' - /usr/lib/php/20131226/gd.so: undefined symbol: zend_list_close in Unknown on line 0
...

はい、うまくいきませんが、見つけてロードしようとしているようです。すべてを元に戻して再起動して、すべてが正常に戻ったことを確認してください。

$ cd /etc/php/5.6/apache2/conf.d
$ sudo rm 20-gd.ini
$ cd /etc/php/5.6/mods-available
$ sudo rm gd.ini
$ cd /usr/lib/php/20131226
$ sudo rm gd.so
$ sudo service apache2 restart

唯一の解決策は、より高いバージョンのPHPにアップグレードすることです!

おすすめ記事