私は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.
これを使用して
locate
at拡張子を持つファイルを表示できます.so
。dom
/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.d
PHPは拡張モジュール設定ファイルを探しています。拡張モジュールとその構成ファイルをリストしてみてください。
> 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.d
PHPが拡張をロードしない理由です。
バージョン固有の拡張機能をロードした場合は、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