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 확장자가 있는 파일을 볼 수 있습니다 .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.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가 확장을 로드하지 않는 이유입니다.

버전별 확장을 로드한 경우 두 가지 옵션이 있습니다. 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

관련 정보