更新後、PHP拡張_ディレクトリが変更されました。

更新後、PHP拡張_ディレクトリが変更されました。

私は18.04LTからv20.04LTSまでのパッケージでアップデートをチェックし、最近Ubuntuをアップデートしたクライアントにアドバイスしています。彼らはUbuntuに付属のPHP 7.2(7.2.34-38+ubuntu18.04.1+deb.sury.org+1)を使用しています。更新後、memcached 拡張機能は使用できなくなります。私の考えでは、これはバックポートされたセキュリティ更新プログラムを受け取り、アプリケーション全体が置き換えられ、いくつかのマネージドホスティングに移行する今年の終わりまでこれに依存しているということです。

Webでphpinfo()を介して設定を見てみましょう。

設定ファイル(php.ini)パス/etc/php/7.2/apache2

拡張ディレクトリ/usr/lib/php/20170718

/usr/lib/php/20170718の内容

$ ls /usr/lib/php/20170718/
calendar.so  ftp.so      mbstring.so   pdo.so        soap.so       wddx.so       zip.so
ctype.so     gd.so       mysqli.so     phar.so       sockets.so    xmlreader.so
curl.so      gettext.so  mysqlnd.so    posix.so      sysvmsg.so    xmlrpc.so
dom.so       iconv.so    newrelic.so   readline.so   sysvsem.so    xml.so
exif.so      intl.so     opcache.so    shmop.so      sysvshm.so    xmlwriter.so
fileinfo.so  json.so     pdo_mysql.so  simplexml.so  tokenizer.so  xsl.so

そして次のディレクトリの内容

/usr/lib/php$ ls 
20170718  20210902  7.2  8.1  packaging              php-helper              sessionclean
20190902  20220829  7.4  8.2  php-fpm-socket-helper  php-maintscript-helper

ここでバージョンと日付のAPI番号を見るのは少し混乱しているようです。それらの間に何らかの混乱が発生すると仮定します。しかし、私はそれらの違いが何であるか本当にわかりません。

php-memcachedをインストールしようとすると:

$ sudo apt install php-memcached
Reading package lists... Done
Building dependency tree       
Reading state information... Done
php-memcached is already the newest version (3.2.0+2.2.0-3+ubuntu18.04.1+deb.sury.org+1).
0 upgraded, 0 newly installed, 0 to remove and 1 not upgraded.

私はまたphp-cliコマンドを実行しようとしたときにこれを見つけました:

$ php --version
PHP Warning:  PHP Startup: Unable to load dynamic library 'igbinary.so' (tried: /usr/lib/php/20170718/igbinary.so (/usr/lib/php/20170718/igbinary.so: cannot open shared object file: No such file or directory), /usr/lib/php/20170718/igbinary.so.so (/usr/lib/php/20170718/igbinary.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library 'msgpack.so' (tried: /usr/lib/php/20170718/msgpack.so (/usr/lib/php/20170718/msgpack.so: cannot open shared object file: No such file or directory), /usr/lib/php/20170718/msgpack.so.so (/usr/lib/php/20170718/msgpack.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library 'memcached.so' (tried: /usr/lib/php/20170718/memcached.so (/usr/lib/php/20170718/memcached.so: cannot open shared object file: No such file or directory), /usr/lib/php/20170718/memcached.so.so (/usr/lib/php/20170718/memcached.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
PHP 7.2.34-38+ubuntu18.04.1+deb.sury.org+1 (cli) (built: Feb 14 2023 18:27:17) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
    with Zend OPcache v7.2.34-38+ubuntu18.04.1+deb.sury.org+1, Copyright (c) 1999-2018, by Zend Technologies

したがって、おそらくigbinary、msgpack、memcachedがありません。

問題は、アップデートプロセス中に何が間違っていて、これらのパッケージを正しくインストールするにはどうすればよいですか?

更新:最終的にこれが問題を解決したと思います。

 # add-apt-repository ppa:ondrej/php
 # sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 4f4ea0aae5267a6c
 # apt-get install php-memcached php7.2-memcached
 # apt-get install php-igbinary php7.2-igbinary # probably redundant to the above
 # apt-get install libapache2-mod-php7.2
 # systemctl restart apache2

最初にどのように壊れたのかはよくわかりませんが。

関連情報