PHP拡張が有効になっていません。

PHP拡張が有効になっていません。

私はRHEL 7を実行しており、PHP 8.1を使用しようとしています。 PHPがインストールされており、拡張機能はYumによってインストールされましたが、PHPでは有効になっていません。

  • たとえば、php -m | grep domコマンドラインから実行すると結果は返されません。

  • 私が走るとsudo yum install php81-php-dom戻ってくるyum

    Package php81-php-xml-8.1.6-1.el7.remi.x86_64 already installed and latest version.
    
  • これを使用してlocateat拡張子を持つファイルを表示できます.sodom/opt/remi/php81/root/usr/lib64/php/modules/dom.so

  • iniにファイルがあります/etc/opt/remi/php81/php.d/20-dom.ini

  • と(iniファイルがあるべき場所だと思ったので)の間に/etc/opt/remi/php81/php.d/20-dom.iniソフトリンクを作成しようとしましたが、PHPが返されました。/etc/php.d/

    HP Warning:  PHP Startup: Unable to load dynamic library 'dom'
    (tried: /usr/lib64/php/modules/dom (/usr/lib64/php/modules/dom: cannot open shared object file: No such file or directory),
            /usr/lib64/php/modules/dom.so (/usr/lib64/php/modules/dom.so: cannot open shared object file: No such file or directory))
    in Unknown on line 0
    

この拡張機能と他の拡張機能をPHPで使用できるようにするには、どうすればよいかわかりません。私も8.0にしてみました。

どんな助けでも大変感謝します。

答え1

複数のバージョン(ソフトウェアコレクション)を並列にインストールするように設計されたphp80-php-*パッケージと、基本インストール用のphp-*パッケージを混同しています。

説明したようによくある質問

正しいストレージ構成を行うには、次の手順に従います。ウィザードの指示

したがって、基本インストールにDOM拡張が必要な​​場合

yum install php-dom

pgsql および mysqli 拡張が必要な​​場合は、SCL をインストールします。

yum install php80-php-pgsql php80-php-mysqli

PSまた、EL-7は現在(8年)かなり古く、最新のディストリビューション(EL-8またはEL-9)が最新のPHPバージョンなどの最新のソフトウェアを実行するのに適していることを思い出してください。

答え2

CentOs 8にphp-pgsql / php-mysql拡張機能をインストールする際に同様の問題が発生しました。

php artisan migrate

PHP警告:PHP起動:動的ライブラリ「php_pgsql.dll」をロードできません(試行:/opt/remi/php80/root/usr/lib64/php/modules/php_pgsql.dll) /usr)/lib64/php/modules/php_pgsql.dll:共有オブジェクトファイルを開くことができません:そのファイルまたはディレクトリはありません)、/opt/remi/php80/root/usr/lib64/php/modules/php_pgsql。 dll.so(/opt / remi/php80/root/usr/lib64/php/modules/php_pgsql.dll.so:共有オブジェクトファイルを開くことができません:そのファイルまたはディレクトリがありません。))行0から不明

このコマンドを使用してPHP 8.0の問題を解決します。

yum install php80-php-pgsql

答え3

レミーコレットありがとうございます単一のPHPインストールと複数のバージョンのPHPインストール間の混乱を排除するためのPHP拡張インストール。

この例では、AlmaLinux 8(Centos 8互換)システムに単一のPHPをインストールし、ユーザーとしてログインしますroot

まず、単一のPHPインストールを確認してください。

> locate bin/php
/usr/bin/php
/usr/bin/php-cgi
/usr/bin/phpize
/usr/sbin/php-fpm

実際には単一のPHPインストールです。

さらなるトラブルシューティングのために、PHP拡張モジュールと設定ファイルの場所を確認してください。検索/etc/php.ini結果:

;;;;
; Note: packaged extension modules are now loaded via the .ini files
; found in the directory /etc/php.d; these are loaded by default.
;;;;

/etc/php.dPHPは拡張モジュール設定ファイルを探しています。拡張モジュールとその構成ファイルをリストしてみてください。

> ls -la /usr/lib64/php/modules/ | grep dom.so
> ls -la /etc/php.d/ | grep dom.ini

ディレクトリに設定ファイルがありますか/etc/php.d?その場合は、PHPが拡張機能を探しているディレクトリを確認してください/usr/lib64/php/modules/dom.so

拡張用の設定ファイルがない場合、/etc/php.dPHPが拡張をロードしない理由です。

バージョン固有の拡張機能をロードした場合は、2つのオプションがあります。 1)(推奨されていません)は、設定ファイルをディレクトリに移動/etc/php.dし、そのファイルがモジュールの場所を指していることを確認することです。または2)(推奨)は、以前の拡張インストールを確認し、正しいリポジトリとパッケージを使用してインストールしてください。

単一のPHPインストール用にPHP拡張モジュールを正しく取り付けるには...

...システムの現在のストレージ状態を一覧表示することから始めます(関連部分):

> dnf repolist all
repo id    repo name                                                  status
apprepo    apprepo                                                    enabled
appstream  AlmaLinux 8 - AppStream                                    enabled
baseos     AlmaLinux 8 - BaseOS                                       enabled
epel       Extra Packages for Enterprise Linux 8 - x86_64             enabled
extras     AlmaLinux 8 - Extras                                       enabled
powertools AlmaLinux 8 - PowerTools                                   enabled
remi       Remi's RPM repository for Enterprise Linux 8 - x86_64      disabled
remi-safe  Safe Remi's RPM repository for Enterprise Linux 8 - x86_64 enabled

PowerToolsは有効ですか? (AlmaLinux 8にはpowertoolがインストールされています。)

powertools AlmaLinux 8 - PowerTools                                   enabled

...はい。ただし、有効になっていない場合:

> dnf config-manager --set-enabled powertools 

リポジトリがepelインストールされアクティブになっていますか?この場合はそうです。しかし、そうでない場合:

> dnf install epel-release

リポジトリがremiインストールされアクティブになっていますか?この場合はそうです。しかし、そうでない場合:

> dnf install https://rpms.remirepo.net/enterprise/remi-release-8.rpm
> dnf config-manager --set-enabled remi

今簡単に:

> dnf install php-dom
> systemctl restart nginx
> systemctl restart php-fpm

そして以下を確認してください:

> php -m | grep dom
dom

関連情報