programing

PHP5에 오류가 있습니다.동적 라이브러리를 로드할 수 없습니다.

projobs 2022. 9. 22. 22:12
반응형

PHP5에 오류가 있습니다.동적 라이브러리를 로드할 수 없습니다.

root@ip-10-131-9-200:/etc/php5/apache2# php -a
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php5/20090626+lfs/curl.so' - /usr/lib/php5/20090626+lfs/curl.so: cannot open shared object file: No such file or directory in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php5/20090626+lfs/mcrypt.so' - /usr/lib/php5/20090626+lfs/mcrypt.so: cannot open shared object file: No such file or directory in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php5/20090626+lfs/mysql.so' - /usr/lib/php5/20090626+lfs/mysql.so: cannot open shared object file: No such file or directory in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php5/20090626+lfs/mysqli.so' - /usr/lib/php5/20090626+lfs/mysqli.so: cannot open shared object file: No such file or directory in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php5/20090626+lfs/pdo.so' - /usr/lib/php5/20090626+lfs/pdo.so: cannot open shared object file: No such file or directory in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php5/20090626+lfs/pdo_mysql.so' - /usr/lib/php5/20090626+lfs/pdo_mysql.so: cannot open shared object file: No such file or directory in Unknown on line 0
Interactive shell

몇 가지 다른 답변이 제시되어 있지만 불필요한 소프트웨어를 설치하는 것은 일반적으로 최선의 해결책이 아닙니다.대신 근본적인 문제를 수정해야 합니다.이러한 메시지가 표시되는 이유는 이러한 확장을 로드하려고 하지만 설치되어 있지 않기 때문입니다.따라서 간단한 해결책은 단순히 PHP에게 로드 시도를 중단하라고 말하는 것입니다.

먼저 위의 확장자를 로드하려고 하는 파일을 확인합니다.

$ grep -Hrv ";" /etc/php5 | grep -E "extension(\s+)?="

Ubuntu 출력 예:

/etc/php5/mods-available/gd.ini:extension=gd.so
/etc/php5/mods-available/pdo_sqlite.ini:extension=pdo_sqlite.so
/etc/php5/mods-available/pdo.ini:extension=pdo.so
/etc/php5/mods-available/pdo_mysql.ini:extension=pdo_mysql.so
/etc/php5/mods-available/mysqli.ini:extension=mysqli.so
/etc/php5/mods-available/mysql.ini:extension=mysql.so
/etc/php5/mods-available/curl.ini:extension=curl.so
/etc/php5/mods-available/sqlite3.ini:extension=sqlite3.so
/etc/php5/conf.d/mcrypt.ini:extension=mcrypt.so
/etc/php5/conf.d/imagick.ini:extension=imagick.so
/etc/php5/apache2/php.ini:extension=http.so

, 그 에 코멘트 아웃 .;Ubuntu 기본 설치에서 어떤 이유로 이런 일이 일어났기 때문에 다른 사람에게 도움이 되었으면 합니다.

sudo apt-get install php5-mcrypt
sudo apt-get install php5-mysql

...etc에서 해결했습니다:)

도움이 되었으면 좋겠다

/etc/php5/cli/conf.d/를 찾아 대응하는 *.ini 파일을 삭제합니다.이 오류는 일부 php 패키지를 깔끔하게 제거할 때 발생합니다.

PHP를 새로운 버전으로 업그레이드한 것 같습니다만, 오래된 .ini 파일은 여전히 오래된 위치를 가리키고 있습니다.

해결 방법: 모듈이 현재 어디에 있는지 확인합니다.

ls -l /usr/lib/php5

이전과 유사한 디렉터리가 있어야 합니다.20090626저저 now now now now now now . . . . . ..20131226

.은 .ini 파일에 /etc/php5/cli/conf.d/

오류가 발생한 .ini 파일을 편집하기만 하면 됩니다.예를 들어, 오류가 mcrypt 모듈의 경우:

sudo vi /etc/php5/cli/conf.d/20-mcrypt.ini

회선을 변경합니다.

extension=/usr/lib/php5/20090626/mcrypt.so

.so 파일의 새 경로를 반영합니다.이 경우 올바른 경로는 다음과 같습니다.

extension=/usr/lib/php5/20131226/mcrypt.so

바로 그거야!에러가 사라졌습니다.물론 각 모듈에 오류가 있을 때 수행해야 합니다.

; 기호를 붙이면 이 동작은 확장을 비활성화합니다.

같은 문제가 발생하여 다음과 같이 처리했습니다.

  1. purge 매개 변수를 사용하여 php를 제거합니다.

    sudo apt-get --purge remove php5-common
    
  2. 재설치:

    sudo apt-get install php5 php5-mysql
    

나의 문제는 다음 명령으로 해결되었다.

sudo apt-get install php5-mcrypt

있습니다

  • PHP 5.3.10-1ubuntu3.4(Suhosin-Patch 포함)(cli)
  • Ubuntu 데스크톱 12.04
  • Mysql 5.5

이 솔루션은 blog.tordeu.com에서 찾았습니다.

sudo aptitude purge php5-suhosin

실진진않, .........suhosin더 이상 필요없고, 내 PHP 버전에서도 작동했습니다.

PHP 5.4.34-1+deb.sury.org~lucid+1 (cli) (built: Oct 17 2014 15:26:51)
Copyright (c) 1997-2014 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2014 Zend Technologies

5.6 php를 사용하는 경우

sudo apt-get install php5.6-module

인지 somehow somehow somehow somehow somehow gmp.so이치노★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

sudo apt-get install --reinstall php5-gmp

Ubuntu 14.04의 경우 mcrypt에 대해서만 오류가 발생하였습니다.

PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php5/20121212/mcrypt.ini' - /usr/lib/php5/20121212/mcrypt.ini: cannot open shared object file: No such file or directory in Unknown on line 0

오류를 자세히 보면 php는 mcrypt.ini를 찾고 있으며 mcrypt.so를 찾고 있지 않습니다.mcrypt.so을 mcrypt.ini로 복사하면 경고가 사라지고 확장자가 올바르게 설치됩니다.조금 더러워 보일 수도 있지만 효과가 있었어요!

주석 해제를 통해 php.ini의 extension_dir를 활성화했습니다.

  extension_dir = "ext"
  extension=phpchartdir550.dll

phpchartdir550 dll을 extension_model(/usr/lib/model5/20121212)에 복사하면 동일한 오류가 발생합니다.

  PHP Warning:  PHP Startup: Unable to load dynamic library 'ext/phpchartdir550.dll' - ext/phpchartdir550.dll: cannot open shared object file: No such file or directory in Unknown on line 0
  PHP Warning:  PHP Startup: Unable to load dynamic library 'ext/pdo.so' - ext/pdo.so: cannot open shared object file: No such file or directory in Unknown on line 0
  PHP Warning:  PHP Startup: Unable to load dynamic library 'ext/gd.so' - ext/gd.so: cannot open shared object file: No such file or directory in Unknown on line 0

@Mike가 지적한 바와 같이 어플리케이션에 실제로 필요하지 않은 모든 것을 설치할 필요는 없습니다.

보다 쉬운 방법은 라이브러리를 올바른 위치에 복사한 후 로드할 확장의 전체 경로를 제공하는 것입니다.

phpchartdir550.dll을 /usr/lib/php5/201212에 복사하여 Ubuntu 14.04의 extension_dir(이것은 phpinfo()를 사용하여 확인할 수 있습니다)에 라이브러리의 풀 경로를 php.ini에서 제공합니다.

;   extension=/path/to/extension/msql.so
extension=/usr/lib/php5/20121212/phpchartdir550.dll

restart apache: sudo service apache2 재시작

다른 .so가 같은 디렉토리에 있어도 필요한 것만 선택적으로 로드할 수 있습니다.

저도 비슷한 문제가 있어서 여기까지 왔습니다.

$ phpunit --version
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php5/20131226/profiler.so' - /usr/lib/php5/20131226/profiler.so: cannot open shared object file: No such file or directory in Unknown on line 0
PHPUnit 5.7.17 by Sebastian Bergmann and contributors.

위와 달리 소프트웨어를 설치해도 문제가 해결되지 않았습니다.

$ sudo apt-get install php5-uprofiler
Reading package lists... Done
Building dependency tree       
Reading state information... Done
php5-uprofiler is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 52 not upgraded.

Debian Bug 보고서 로그를 통해 해결 방법을 찾았습니다.

$ sudo vim /etc/php5/mods-available/uprofiler.ini

ini 파일을 편집하여 extension=profiler.so을 extension=uprofiler.so으로 변경하였습니다.그 결과, 행복하게:

$ phpunit --version
PHPUnit 5.7.17 by Sebastian Bergmann and contributors.

즉, 더 이상의 경고는 없습니다.

(Ubuntu 사용자용)

저도 같은 문제가 있었지만, 위의 답변 중 어느 것도 그것을 해결하지 못했습니다.내가 문제를 해결한 방법은 이렇다.

를 엽니다.php.ini파일(내 것이 들어 있었다./etc/php/7.3/cli/php.ini).

다음과 같은 경우가 있습니다.

extension=pdo_mysql

또는 다음과 같은 경우가 있습니다.

extension=/here/is/the/path/to/your/file/pdo_mysql.so

다음 행을 먼저 추가합니다.extension=pdo_mysql

extension=pdo

다음과 같은 이점이 있습니다.

extension=pdo
extension=pdo_mysql

문제는 (적어도 제 경우) 로딩이 필요한 것 같습니다.pdo첫 번째로 로드하는 확장 기능pdo_mysql내선 번호

도움이 됐으면 좋겠네요!

언급URL : https://stackoverflow.com/questions/10565521/error-in-php5-unable-to-load-dynamic-library

반응형