半年くらい前、ConoHaのVPSで動かしているKusanagiサーバーで、ownCloudが
1 2 |
PHP のモジュール intl がインストールされていません。 サーバー管理者にモジュールのインストールを依頼してください。 |
とエラーを吐いて動かなくなりました。どうもいつのまにかPHPが7.3になってて、ownCloudが7.3非対応らしいことがわかって対応待ちだと思って放置してましたが、久しぶりに本腰。
ownCloudの10.2.1はいまだPHP7.3非対応。10.3で対応予定となっているものの予定の8月って明日で終わり、、、まぁそれまで一旦PHPを7.2にダウングレードしておくことに。
というか自分では上げたことないいし、rpm -qaしてもphp73とかいない。でもphp -v は7.3。どうなってんの?と思ったけど、kusanagi-php7というパッケージで一緒にPHPが更新されるぽい。それがyum updateで適用されてしまったと。ちょっと恐い。
ということでこちらを参考にさせていただき、
1 |
yum downgrade kusanagi-php7-7.2.13-1.noarch |
で7.2系の最新版にダウングレード。しかしこれでもphp-intlは読み込まれない。PHPが7.2.13なのに対し、intlが少し古いから?
ってことで、次はこちらを参考に
1 |
yum --enablerepo=remi,remi-php7.2 install php72-php-intl |
する。これでphp-intlは7.2.22になるけどダメ。php -vの結果は、
1 |
PHP Warning: PHP Startup: Unable to load dynamic library '/intl.so' (tried: /intl.so (/intl.so: cannot open shared object file: No such file or directory), /usr/local/php7/lib/php/extensions/no-debug-non-zts-20170718//intl.so.so (/usr/local/php7/lib/php/extensions/no-debug-non-zts-20170718//intl.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0 |
2つ目の記事にある、20-intl.iniを書き換える作業は以前にもやってるらしく、.ini~や.ini.bakファイルが残ってたw。とりあえず.bakを書き戻してkusanagi restart。
あとはownCloudのWeb画面を開くと、フォルダのパーミッション系のエラーにかわるので、appsとdataドルだをchmod -R httpdして終了(なぜかownCloudを更新するとオーナーがApacheになるのも毎回の風物詩)。
次は互換性のない古いappsがアプデートできないというエラーになるので、インストールディレクトリで
1 |
sudo httpd occ app:disable hogehoge |
などとしてアンインストール。もはやなんの機能かも憶えていないアプリ4つほど言われるままに削除。
これでどうにか起動にこぎつけました。
■yum updateからkusanagiを除外
さて、このままではまたyum updateした時にkusanagi 7.3になってしまいます。kusanagi自体は最新版がよさげなので悩ましいところですが、当面の措置として/etc/yum.confに
1 |
exclude=kusanagi-php7 |
と追加。yum updateしても候補にkusanagi-php7-7.3.xxが出ないことを確認します。うーん、でもこれkusanagiの他のモジュールは更新されてしまうので大丈夫なんだろうか。kusanagi 関係のすべての更新を止めるのもなんだなぁ。
この辺、不透明で勝手に設定ファイルが置き換わったいとkusanagiのめんどくさいところですかね。他になんのアプリもモジュール足さない、引かない運用ならいいんでしょうけど。
毎回index.htmlが上書きされたり、ssl.confが勝手にできてLet’s Encryptの設定エラーになったり、、
■更新:7.3用のintlを入れておく
7.3になったら必要になる7.3用のintlを忘れないうちに入れておくことに。kusanagi-php7をyum updateで更新して7.3にした後、下の記事を参考に72を73に置き換えて実行。
1 |
yum --enablerepo=remi,remi-php7.3 install php73-php-intl |
そして/etc/php7.d/extensions/20-intl.iniのパスを72から73に書き換えて終了。