Skip to main content

Plesk

2019
04-05
更新日:2020/10/21

PleskのPHPは.webpをサポートしていない

Plesk(17.8.11)ではPHPのGDモジュールにて、WebPサポート標準提供していません。

自分のサイトで.webp画像が表示されない。
色々調べて見ると、Plesk(17.8.11)では.webpをサポートしていませんでした。
PHP 7.0.0 以降、--with-webp-dir = DIR を追加する必要があり、GD ライブラリをコンパイルしなくてはなりません。
?.....使っているサーバが対応していないとは?
GMOに問い合わせて見ると

お問い合わせいただきました件ですが、PHPのGDモジュールにて、WebPサポートを有効化したいということでお間違いないでしょうか。
その場合、大変申し訳ございませんが、Pleskにて標準提供いたしておりますPHPでは、WebPサポートに対応しておりませんので、別途WebPサポートに対応したGDモジュールをコンパイル(生成)し、既存のGDモジュールと入れ替えて、Plesk上で認識させる(PHPハンドラの再読み込みを行う)必要がございます。
詳細につきましては、下記のPleskコミュニティーサイトに掲載されておりますので、ご確認をいただき、必要な作業を行っていただきますう、お願いいたします。

 How to compile PHP gd.so module with WebP support
 https://talk.plesk.com/resources/how-to-compile-php-gd-so-module-with-webp-support.4/
 ※詳細を確認するためには、Pleskコミュニティーサイトにログインするためのアカウント作成が必要となりますので、ご注意ください。

なお、別途有償になりますが、弊社にて設定代行が可能か確認させていただくことも可能でございますので、
もしご希望の場合は、お手数ですが、ご利用いただいておりますPHPのバージョンをお知らせいただきますよう
お願いいたします。
webpファイルを設置されたいとのことでございますが、
誠に申し訳ございませんが、弊社では運用実績がございませんため、
操作手順等につきましては、ご案内できかねますことご了承ください。

しかしながら、提供元のPlesk社が出している記事がございましたので、ご参照のうえ、バックアップを取得のうえお客さまのご判断の下お試しくださいますようお願いいたします。

https://talk.plesk.com/threads/php-7-x-webp-support-in-gd.343674/

 ※弊社が動作を保証するものではございませんこと、予めご了承ください。

なんと、ややこしい。
多少の金額ならばGMO様にお願いしようと思っていたのですが、.webp対応するには自分でコンパイル作業ですか?
コマンドいらずがPleskの売りの一つでもある。また、利用するPHPのアップグレードの度にコンパイル作業は荷が重いです。

❶webpの利用を諦める
❷自力でコンパイルする
❸お金を払って設定してもらう

朗報!! バージョン17.9以降でPHP gd.soモジュール対応予定

先日、Pleskコミュニティーサイトよりメールがあり、Plesk Onyx 17.9以降で対応予定。(あくまで予定なので、細かなスケジュールはわかりませんが。)
現在、サイト稼働中のサーバでもあり、PHP GDモジュールの導入はもうしばらく様子を見ようと思います。

17.9でwebp対応(正規リリース待)

コンパイル方法

どうしても待てない方に、リンク等を転記しておきます。
GMOポータルサイト→VPSコンソール→コンソール

自己責任で行ってください。

以下、Pleskコミュニティーサイトからの抜粋です。
「WEBPをサポートしたPHP gd.soモジュールをコンパイルする方法」

デフォルトでは、Pleskパッケージplesk-php71-gdはWebPサポート付きのPHP GDモジュールを出荷しません。
最初の議論はここにあります問題 - PHP 7.x:GDでのwebpサポート
これは個人責任においてgd.soモジュールをWebPサポートでコンパイルする方法です。

1.必要なパッケージをすべてインストールします。(PHP 7.1の場合)

# yum install make gcc plesk-php71-devel libjpeg-turbo-devel libpng-devel libXpm-devel freetype-devel libwebp-devel

2. PHPソースをダウンロードしてください。
注意!PHPソースのバージョンは、あなたのPlesk PHPバージョンと同じである必要があります!
たとえば、PHP 7.1.11の場合:

# wget http://be2.php.net/get/php-7.1.11.tar.gz/from/this/mirror
# tar -xzf mirror
# cd php-7.1.11/ext/gd

3. gd.soモジュールをコンパイルします。

# /opt/plesk/php/7.1/bin/phpize
# ./configure --with-php-config=/opt/plesk/php/7.1/bin/php-config --with-webp-dir=/usr/include/webp --with-freetype-dir=/usr/include/freetype2/freetype --with-jpeg-dir=/usr/include --with-png-dir=/usr/include --with-xpm-dir=/usr/include
# make

4.元のPlesk PHP gd.soモジュールをコンパイル済みのものに置き換えます。

# mv /opt/plesk/php/7.1/lib64/php/modules/gd.so /opt/plesk/php/7.1/lib64/php/modules/gd.so_orig
# cp modules/gd.so /opt/plesk/php/7.1/lib64/php/modules/
# plesk bin php_handler --reread

5.すべてが問題ないことを確認します。

# /opt/plesk/php/7.1/bin/php -m | grep gd
gd

以下の内容でファイルgdinfo.phpを作成します。

<?php
var_dump(gd_info());
?>

そしてWebPサポートが有効になっていることを確認してください。

# /opt/plesk/php/7.1/bin/php gdingo.php
array(12) {
["GD Version"]=>string(26) "bundled (2.1.0 compatible)"
["FreeType Support"]=>bool(true)
["FreeType Linkage"]=>string(13) "with freetype"
["GIF Read Support"]=>bool(true)
["GIF Create Support"]=>bool(true)
["JPEG Support"]=>bool(true)
["PNG Support"]=>bool(true)
["WBMP Support"]=>bool(true)
["XPM Support"]=>bool(true)
["XBM Support"]=>bool(true)
["WebP Support"]=>bool(true)
["JIS-mapped Japanese Font Support"]=>bool(false)
}

オリジナルのPlesk-php71-GDパッケージの偽の除去を行うことを忘れないでください!そうでなければ、あなたのカスタムgd.soは次のアップデートで上書きされます。

# rpm -e --justdb plesk-php71-gd

6. Enjoy!