저는 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(/opt/remi/php80/root/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가 확장을 로드하지 않는 이유입니다.
버전별 확장을 로드한 경우 두 가지 옵션이 있습니다. 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