基本的にはこの手順でCentOS8をインストール。ただしマシンのせいなのかインストールタイプを選ぶ画面が出ず、デスクトップ画面付きのPCとしての構成でインストールされた模様(インストール完了後、デスクトップUIが表示されたため)。
ちなみにPHPは7.4.4になりました。
このマシンで、10.のMySQL以外を設定した状態まで持って行きました。その後にZipArchiveを設定した際の話となります。
現象
普通に
# dnf list available | grep zip
# dnf install -y php74-php-pecl-zip.x86_64
でインストールを実行しました。
# vi /etc/php.ini
;;;;;;;;;;;;;;;;;;;;;;
; Dynamic Extensions ;
;;;;;;;;;;;;;;;;;;;;;;
; If you wish to have an extension loaded automatically, use the following
; syntax:
;
; extension=modulename
;
; For example:
;
; extension=mysqli
;
; When the extension library to load is not located in the default extension
; directory, You may specify an absolute path to the library file:
;
; extension=/path/to/extension/mysqli.so
;
; Note : The syntax used in previous PHP versions ('extension=<ext>.so' and
; 'extension='php_<ext>.dll') is supported for legacy reasons and may be
; deprecated in a future PHP major version. So, when it is possible, please
; move to the new ('extension=<ext>) syntax.
extension=zip.so
php.ini
に追記。その後に
# systemctl restart httpd
でApacheを再起動しましたが……。
# less /var/log/php/php_errors.log
PHP Warning: PHP Startup: Unable to load dynamic library 'zip.so' (tried: /usr/lib64/php/modules/zip.so (/usr/lib64/php/modules/zip.so: cannot open shared object file: No such file or directory), /usr/lib64/php/modules/zip.so.so (/usr/lib64/php/modules/zip.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
Apache起動時にエラーが出てしましました。ライブラリが見付からないようです。
おかしいな、と思い
# ls /usr/lib64/php/modules/
を実行。すると、zip.so
が一覧にありません。
なん……だと……。
# find / -name "*zip.so"
/opt/remi/php74/root/usr/lib64/php/modules/zip.so
あれ、モジュールの場所が違いますね。とりあえずシンボリックリンクを張ってみることにしました。
# ln -s /opt/remi/php74/root/usr/lib64/php/modules/zip.so /usr/lib64/php/modules/zip.so
# ls -al /usr/lib64/php/modules/
lrwxrwxrwx 1 root root 49 mm月 dd hh:ii zip.so -> /opt/remi/php74/root/usr/lib64/php/modules/zip.so
OK。この状態で再びApache再起動。
# systemctl restart httpd
すると、起動時にモジュールが見付からないエラーが表示されなくなりました。
動作検証はしていないのですが、おそらくこれで大丈夫ではないかと。