仮想マシンをPHP7にアップグレードしようとしましたが、次のようないくつかの問題が発生しました。 PHP警告:PHP起動:動的ライブラリ '/usr/lib64/php/modules/pdo.so' - /usr/をロードできません。 lib64/php/modules /pdo.so: 未定義シンボル: 不明な行 0 の zend_get_execulated_scope
このファイルをもう一度ダウンロードしたいと思います。どうすればいいですか?
Centos 7で作業しています。
答え1
CentOS 7のパッケージマネージャはyumで、whatprovides
ファイルに属するパッケージを見つけるために使用できるサブコマンドがあります。たとえば、再インストール方法を知りたいと思います。/usr/lib64/php/modules/pdo.so
yum whatprovides /usr/lib64/php/modules/pdo.so
...
php-pdo-5.4.16-42.el7.x86_64 : A database access abstraction module for PHP applications
Repo : base
Matched from:
Filename : /usr/lib64/php/modules/pdo.so
php-pdo-5.4.16-43.el7_4.x86_64 : A database access abstraction module for PHP applications
Repo : updates
Matched from:
Filename : /usr/lib64/php/modules/pdo.so
したがって、私のCentOS 7システムでは
yum install php-pdo
必要に応じてすすぎ、繰り返します。
答え2
インストールされているすべてのPHPパッケージ(通常は「php-*」)を再インストールする必要があります。持っているものとは異なるRPMの構成ファイルに対して、RPMは「.rpmnew」ファイルを生成し、パッケージを再インストールするトランザクションを実行すると警告を表示します。これを手動で使用して破損したファイルを置き換えることができます(またはdiffツールを使用して、望むものと望ましくないものを見つけることもできます)。
注:/etc/php.d/にカスタムiniファイルがある場合は注意してください。 Yumはこれについて何の警告も発行しません。再インストールを実行する前にフォルダを削除したり名前を変更したりできます。