VM を PHP7 にアップグレードしようとしていますが、次のような問題がいくつか発生しました: PHP 警告: PHP 起動: 動的ライブラリ '/usr/lib64/php/modules/pdo.so' をロードできません - /usr/lib64/php/modules/pdo.so: 未定義のシンボル: zend_get_executed_scope が 0 行目の Unknown にあります
これらのファイルを再度ダウンロードしたいのですが、どうすればよいですか?
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」ファイルを作成し、パッケージを再度インストールするトランザクションを実行するときに警告を発します。これらのファイルを手動で使用して、壊れたファイルを置き換えることができます (または、差分ツールを使用して、必要なものと不要なものを判断することもできます)。
補足: /etc/php.d/ にカスタム ini ファイルがある場合は注意してください。Yum はそれらについて警告を発しません。再インストールを実行する前に、そのフォルダーを削除または名前変更することができます。