>  기사  >  백엔드 개발  >  PHP가 동적 라이브러리를 로드할 수 없으면 어떻게 해야 합니까?

PHP가 동적 라이브러리를 로드할 수 없으면 어떻게 해야 합니까?

藏色散人
藏色散人원래의
2020-07-23 11:02:313905검색

PHP가 동적 라이브러리를 로드할 수 없는 문제에 대한 해결 방법: 1. PHP 통합 패키지의 "libmySQL.dll"을 system32 디렉터리에 복사합니다. 2. PHP 압축 해제 디렉터리를 PATH에 추가합니다. 3. Apache 구성 파일에서 다음을 사용합니다. 일부 동적 링크 라이브러리를 로드하는 loadfile입니다.

PHP가 동적 라이브러리를 로드할 수 없으면 어떻게 해야 합니까?

php에서 동적 라이브러리를 로드하지 못했습니다

PHP의 통합 패키지에는 많은 동적 링크 라이브러리가 포함되어 있지만 지침에 따라 구성했을 때 phpinfo()를 실행한 결과 많은 템플릿이 로드되지 않았습니다. php.ini에서 해당 링크 라이브러리 앞의 주석(;)을 제거했지만.

WAMP를 구성하면서 매우 흥미로운 점을 발견했습니다. mysql 모듈이 로드될 때도 있고 로드되지 않을 때도 있다는 것입니다. 주의 깊게 연구한 결과, mysql이 로드될 수 있는 경우에는 설치 파일을 사용하고, 로드할 수 없는 경우에는 mysql이 대부분 압축된 패키지를 사용한다는 것을 발견했습니다. 두 도시의 차이점은 무엇인가요?

차이점은 설치 패키지를 설치하는 동안 mysql 설치 디렉터리(./MySQL*.*/bin)를 PATH에 추가하도록 선택할 수 있다는 것입니다.

이것은 어떤 영향을 미칠까요? 이 디렉토리에는 PHP 통합 패키지인 libmySQL.dll과 동일한 이름을 가진 파일이 있는 것으로 나타났습니다.

온라인을 검색한 결과 다른 해결 방법이 있는 것을 발견했습니다.

PHP 통합 패키지의 libmySQL.dll을 system32 디렉터리에 복사하세요. 이 디렉터리는 일반적으로 PATH에 있습니다.

PATH를 변경할 필요가 없는 다른 해결 방법이 있습니다. 가장 좋은 방법은 Apache 구성 파일에 문장을 추가하는 것입니다. [loadfile X:/*/libmySQL.dll]은 절대 경로를 사용합니다.

문제의 근본 원인을 찾은 것 같습니다. 다른 모듈에서도 이 방법으로 해결할 수 있나요?

답은 '예, 가능합니다'입니다.

가장 쉬운 방법은 PHP 압축 해제 디렉터리(일반적으로 libmysql.dll, php.exe 등 포함)를 PATH에 추가하는 것입니다.

그런 다음 시스템을 다시 시작하세요. 아파치를 다시 시작하는 것만으로는 작동하지 않으며 phpinfo에서 확인할 수 있습니다. ) "Apache Environment"의 PATH 매개변수를 확인하면 "PATH" 항목이 전혀 변경되지 않은 것을 알 수 있습니다. 시스템을 다시 시작하지 않고도 애플리케이션을 변경할 수 있는지는 아직 모르겠습니다. 말해 주세요.

PATH 변경 및 시스템 재시작을 방지하는 또 다른 방법은 Apache 구성 파일의 loadfile을 사용하여 일부 동적 링크 라이브러리를 로드하는 것입니다.

테스트 후, 내가 아는 모듈과 로드할 동적 링크 라이브러리를 나열했습니다.

  PHP模块      运行时要加载的动态链接库
  ------------------------------------------------------------
  php_fdf.dll                ->fdftk.dll
  php_interbase.dll      ->gds32.dll
  php_pdo_firebird.dll ->gds32.dll
  php_curl.dll               ->ssleay32.dll
  php_ldap.dll             ->ssleay32.dll
  php_openssl.dll        ->ssleay32.dll
  php_mcrypt.dll         ->libmcrypt.dll
  php_mhash.dll         ->libmhash.dll
  php_msql.dll           ->msql.dll
  php_mssql.dll           ->ntwdblib.dll
  php_pdo_mssql.dll   ->ntwdblib.dll
  php_mysql.dll           ->libmysql.dll
  php_mysqli.dll          ->libmysql.dll
  php_pdo_mysql.dll   ->libmysql.dll

로드할 동적 링크 라이브러리는 모두 PHP의 통합 패키지 압축 해제 디렉터리에 있습니다(보통 libmysql.dll, php 포함). .exe 잠깐만요). 이 디렉토리에는 fribidi.dll, libeay32.dll 및 libswish-e.dll의 세 가지 파일이 있습니다. 아직 이 파일들이 어떤 용도로 사용되는지 모르겠습니다. 각 모듈의 이름과 기능에 대해서는 자세히 설명하지 않겠습니다.

권장: "PHP 튜토리얼"

참고: 이 방법은 php5.1.X, php5.2.X 시리즈에 적합하며 php.4X는 테스트되지 않았습니다.

위 내용은 PHP가 동적 라이브러리를 로드할 수 없으면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.