先日やっとコンパイルが成功したOpenLiteSpeed上のPHP8.1.3ですが、
WordPressのサイトヘルスチェックを見たら、
なんとオプションモジュールの「ImageMagick」と「Intl」がないと表示されていました。

WordPressのヘルスチェック画面

ちなみに、上記画像は「ImageMagick」がなく、「Intl」だけですが、
手順を試していて、このスクショを取る前に「ImageMagick」を対応させた後なので、
「Intl」だけになっています。

というわけで、今回はWordPressのチューニングと題してOpenLiteSpeedでPHP8.1.3を稼働させている際の上記オプションモジュールを追加する方法を紹介します。


PHP8.1.3にIntlモジュールを追加する方法

Intlとは?

PHP公式より引用
「国際化用拡張モジュール (これ以降では Intl と略します) は » ICU ライブラリのラッパーです。 PHP プログラマが、ロケール関連のさまざまな操作を行えるようにします。 フォーマット、音訳、エンコード変換、カレンダーの処理、 » UCA 準拠の照合順序 (collation)、 テキストの区切り、ロケール識別子やタイムゾーンや書記素を用いた操作などが可能です。」

これは簡単です、PHPの標準モジュールであってデフォルト無効化されているの、これを有効化してやれば良いのです。

手順としては前回の記事でPHP8.1.3のコンパイル方法を紹介しましたが、その際のオプションにIntlを有効化するオプションを追加するだけで対応可能です。

具体的にはコンフィグ作成時に以下のオプションを追加します。

コンフィグ作成時にオプションを追加

'--enable-intl'

したがってコンフィグ全体としては以下のようになります。(※前回のコンフィグの最後尾に追加しています。)

こちらでコンフィグを実行してから、ビルドしてインストールすればIntlモジュールは有効になります。

$ ./configure -prefix=/usr/local/lsws/lsphp81 '--with-mysqli' '--with-zlib' '--enable-gd' '--enable-gd-jis-conv' '--enable-shmop' '--enable-sockets' '--enable-sysvsem' '--enable-sysvshm' '--enable-mbstring' '--with-iconv' '--with-pdo-mysql' '--enable-ftp' '--with-curl' '--enable-soap' '--enable-xml' '--with-openssl' '--enable-bcmath' '--enable-exif' '--with-jpeg' '--with-freetype' '--with-gettext' '--with-bz2' '--enable-litespeed' '--enable-opcache' '--with-zip' '--with-xpm' '--enable-intl'
$ make
$ sudo make -k install

PHP8.1.3にImageMagickモジュールを追加する方法

ImageMagickとは?

PHP公式より引用「Imagick は、ImageMagick API を使用して画像の作成や修正を行う ネイティブ PHP 拡張モジュールです。ImageMagick は、ビットマップ画像の作成や修正を行うソフトウェア群です。 さまざまな (100 をこえる) 形式の画像の読み書きや変換に対応しており、 DPX や EXR、GIF、JPEG、JPEG-2000、PDF、PhotoCD、PNG、Postscript、SVG そして TIFF といった形式を扱うことができます。」

こちらは上記Intlのように標準モジュールではなく、拡張モジュール(extension)になります。
そのため標準モジュールの場合とは手順が異なります。

拡張モジュールのソースコードをダウンロードして、コンフィグ実行、コンパイルして、
作成された拡張モジュールを指定のフォルダに移動し、それをphp.iniに記述するという流れになります。

ImageMagickのダウンロード

以下のサイトから最新版をダウンロードします。(※2022年2月26日現在では3.7が最新版)

https://pecl.php.net/package/imagick

$ wget https://pecl.php.net/get/imagick-3.7.0.tgz

ダウンロードしたら解凍します。

$ tar xvzf imagick-3.7.0.tgz

ディレクトリに入ります。

$ cd imagick-3.7.0

上記ディレクトリから移動せず、先日インストールしたPHP8.1.3のbinに含まれている、「phpize」を実行します。

$ /usr/local/lsws/lsphp81/bin/phpize

すると以下のような感じで表示されます。

Configuring for:
PHP Api Version:         20210902
Zend Module Api No:      20210902
Zend Extension Api No:   420210902

次に以下を実行します。

$ ./configure --with-imagick=/usr/local/lsws/lsphp81 --with-php-config=/usr/local/lsws/lsphp81/bin/php-config   

終わったら、ビルド、インストールします。

$ make
$ sudo make install

PHP8.1.3にmemcacheモジュールを追加する方法

Memcacheとは?

PHP公式より引用
「Memcache モジュールは、memcached に対する手続き型および オブジェクト指向のインターフェイスを提供します。これは非常に効率的な キャッシュデーモンで、動的な web アプリケーションでの データベースの読み込み量を減らすように設計されています。」

memcacheもImagiMagickと同様に標準モジュールではなく、拡張モジュールとなります。

そのため、ImageMagickとほぼ同様の手順で追加することになります。

Memcacheのダウンロード

以下のサイトから最新版をダウンロードします。(※2022年2月26日現在では8.0が最新版)

https://pecl.php.net/package/memcache

$ wget https://pecl.php.net/get/memcache-8.0.tgz

ダウンロードしたら解凍します。

$ tar xvzf memcache-8.0.tgz

ディレクトリに入ります。

$ cd memcache-8.0

上記同様、ディレクトリから移動せず、先日インストールしたPHP8.1.3のbinに含まれている、「phpize」を実行します。phpizeを実行します。

$ /usr/local/lsws/lsphp81/bin/phpize

次に以下を実行します。

$ ./configure --enable-memcache=/usr/local/lsws/lsphp81 --with-php-config=/usr/local/lsws/lsphp81/bin/php-config 

終わったら、また同様にビルド、インストールします。

$ make
$ sudo make install

追加したモジュールをphp.iniに追加する

これで最後の手順です。

上記でコンパイルして生成した拡張モジュールを使えるように設定します。

以下のファイルを開き、今回追加したモジュール名をそれぞれ最後尾に記載します。
また、opcache.soの記載がなければここに記載することで有効化できます。

php.iniを編集

$ sudo vi /usr/local/lsws/lsphp81/lib/php.ini

extension=imagick.so
extension=memcache.so

保存して終了したら、OpenLiteSpeedを再起動で完了です。

phpinfoで確認してみましょう、無事に以下のように追加されて表示されていればOKです。


おまけ「opcache.so」を追加する

OPcacheとは?

PHP公式サイトの説明より引用
「OPcache はコンパイル済みのバイトコードを共有メモリに保存し、PHP がリクエストのたびにスクリプトを読み込み、パースする手間を省くことでパフォーマンスを向上させます。」

というわけで高速化されるなら有効化しましょう。

ちなみにコンフィグ記述に含めている「–enable-opcache」ですが、
これだけでは有効にならず、php.iniに以下も記述しないと有効化できないようです。

zend_extension=opcache.so

有効化されたかは以下コマンドで確認できます。

$ /usr/local/lsws/lsphp81/bin/lsphp -v
PHP 8.1.3 (litespeed) (built: Feb 26 2022 07:44:50)
Copyright (c) The PHP Group
Zend Engine v4.1.3, Copyright (c) Zend Technologies
    with Zend OPcache v8.1.3, Copyright (c), by Zend Technologies

上記にZend OPcacheが記載されていれば有効化はOKです。


まとめ

今回はOpenLiteSpeed上でPHP8.1.3を稼働させている場合のIntlモジュール、ImageMagickモジュール、memcacheモジュールの有効化する方法について紹介しました。

何かの参考になれば幸いです。