KUSANAGIのPHP7.2環境にphp-intlをインストール

PHP7.2環境ではownCloud10.0.4 以前は動きません

KUSANAGIの 2018-03-18 のアップデートで、PHP7のバージョンも 7.0 から 7.2 にアップデートされました。

KUSANAGIモジュール更新情報

この為、KUSANAGI環境で ownCloud を運用している場合は ownCloud10.0.4 以前では動かなくなるのでご注意を。

以下のようなエラーがブラウザ上に表示されます。

This version of ownCloud is not compatible with PHP 7.2
You are currently running 7.2.3.

PHP7.2対応のownCloudにアップデート

ownCloud10.0.5 以降で PHP7.2対応がされていますので、ownCloud も最新版にアップデートしましょう。

Server

10.0.5 - 2018-01-23
Added
Technology preview for PHP 7.2 support - #29878

今回は、現時点での最新版の 10.0.7 をインストールします。

ownCloud10.0.5からphp-intlが必須に

ownCloud 10.0.5 から php-intl が必須になったようです。

https://doc.owncloud.org/server/latest/admin_manual/release_notes.html#php-intl-now-is-a-hard-requirement

php-intl now is a hard requirement
Please make sure to have the PHP extension installed before upgrading.

実際に、php-intl をインストール作業しないでownCloudにアクセスすると以下のようなエラーが出てログインできなくなります。

PHP のモジュール intl がインストールされていません。
サーバー管理者にモジュールのインストールを依頼してください。

PHP モジュールはインストールされていますが、まだ一覧に表示されていますか?
サーバー管理者にWebサーバーを再起動するよう依頼してください。

# php -info | grep intl
/etc/php.d/20-intl.ini,
intl
intl.default_locale => no value => no value
intl.error_level => 0 => 0
intl.use_exceptions => 0 => 0

# php7 -info | grep intl
#

確かに、php5.6ではintlが入っていますが、アップデート後のphp7.2では入っていません。

php-intl のインストール

php7.2のKUSANAGI環境に php-intlをインストールします。なかなか情報がなかったので手探りで導入しましたので、もっとよいやり方があればコメントいただければと思います。

以下のコマンドでインストールできました。


# yum --enablerepo=remi,remi-php7.2 update
# yum --enablerepo=remi,remi-php7.2 install php72-php-intl

php.ini へ php-intl 設定

これだけでは php-intl が有効にならず、phpinfo() でもintl の項目が出てきません。

php.ini に intl.so の extension 設定をするのですが、アップデート後のKUSANAGIでは extension_dir は以下になっており、intl.so が入っていません。

/usr/local/php7/lib/php/extensions/no-debug-non-zts-20170718

調べてみると、以下のディレクトリにありました。

/opt/remi/php72/root/usr/lib64/php/modules

php5.6 の extension の設定ファイルを php7用のディレクトリにコピーします。


# cp /etc/php.d/20-intl.ini /etc/php7.d/extensions/

20-intl.ini の内容を以下に書き換えます。extension_dir にモジュールをコピーせず、直接パスを記載することにしました。


; Enable intl extension module
;extension=intl.so
extension=/opt/remi/php72/root/usr/lib64/php/modules/intl.so

これで、kusanagi を再起動することで php-intl を有効にできました。

ownCloudへのログイン

これで、アップデート後のKUSANAGI環境でownCloudにログイン可能になりました。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です