php가 com 구성 요소를 호출할 수 없는 문제에 대한 해결 방법: 1. php 버전과 필요한 시스템 도구를 확인합니다. 2. php.ini를 구성하고 "com.allow_dcom = true"를 활성화합니다. "php_com_dotnet.dll"이 성공적으로 로드되었는지 확인하세요.
이 튜토리얼의 운영 환경: Windows 7 시스템, PHP 버전 8.1, Dell G3 컴퓨터.
php가 com 구성 요소를 호출할 수 없으면 어떻게 해야 하나요? PHP 참조 COM 구성 요소 함정 기록
최근 작업 항목에 "gig job"이 나타났습니다. 기존 PHP 프로젝트에 기능을 추가해야 하며 해당 기능을 구현하는 데 필요한 프로젝트와 소스 코드 프로젝트도 있습니다. 이 책은 아주 쉬운 일이다. 나는 PHP를 거의 사용하지 않지만 이것이 가장 중요한 "제한 요소"는 아니지만, 함수 라이브러리가 .NET 프레임워크를 사용하여 구현된다는 점이 상대적으로 복잡합니다. 함수형 논리 매뉴얼이 아니기 때문에 PHP에서 복사하기가 어렵습니다. 따라서 .NET의 동적 라이브러리를 PHP에서 직접 참조하는 것이 "과제"를 완료하는 열쇠가 되었습니다
인터넷의 많은 선배들이 이 문제를 기록했지만 복사에 실패했습니다. 일", 피트 레코드를 만나 채우다
COM 구성 요소 동적 라이브러리 생성
COM 구성 요소(COM 구성 요소)는 Microsoft에서 개발한 소프트웨어 개발 기술입니다. 그 본질은 응용 프로그램, 운영 체제 및 기타 구성 요소에 서비스를 제공할 수 있는 작은 바이너리 실행 프로그램입니다. PHP에서 타사 동적 라이브러리를 참조하려면 새로운 COM("Component.class") 메서드를 사용해야 합니다. 구성 요소는 COM 구성 요소여야 합니다
1 Windows 클래스 라이브러리 프로젝트를 빌드하세요
. 어떤 프레임워크 버전이든 Windows 탭에서 클래스 라이브러리 프로젝트를 찾을 수 있어야 합니다
이렇게 하면 프로젝트에 기본적으로 필요한 정보를 기록하는 PropertiesAssemblyInfo.cs 파일이 프로젝트에 있게 됩니다. 프로젝트 세트
2. 대상 프레임워크가 일치해야 합니다
프로젝트 생성 이때 프레임워크를 선택할 수 있습니다
나중에 조정하는 경우 프로젝트 속성 > 응용 프로그램에서 대상 프레임워크에서 수정할 수 있습니다
참고 나중에 dll을 등록할 때 프레임워크가 일관되어야 한다는 점
3. COM 구성 요소를 설정하는 것을 볼 수 있습니다
PropertiesAssemblyInfo.cs 파일에서 ComVisible을 다음과 같이 수정합니다
[assembly: ComVisible(true)]
4. name key
Project Properties> 서명에서 "어셈블리 서명"을 선택하고 동시에 "강력한 이름 키 파일 선택"에서 새 키 파일을 생성한 다음 해당 dll 파일을 생성합니다. binDebug 디렉터리
5. 내장할 수 없는 동적 라이브러리가 있는 경우
프로젝트 Framework 버전이 낮거나,
참조된 라이브러리에 상호 운용성에 필요한 기능이 부족합니다.
즉, 참조된 라이브러리를 사용할 수 없습니다.
그러면 종속 DLL도 후속 등록 및 기타 작업을 수행해야 합니다.
DLL을 서버에 등록합니다.
관련 시스템 수준 작업에는 많은 함정이 있습니다...
1. PHP 버전 확인
개인적으로 테스트한 버전 5.3.22는 없고 5.4.5 버전도 있으니 5.4 이상 버전을 사용해 보세요
이제 최고 PHP 버전은 8.0인데, 잘 모르겠네요. 작동 방법은 여전히 같습니다
2. 필요한 시스템 도구를 확인하세요
gacutil과 regasm 두 가지 도구가 필요하며 둘 다 Framework 버전과 일치해야 합니다
즉, 생성된 COM 구성 요소의 dll이 사용됩니다. 어떤 버전의 프레임워크인지 여기에서 해당 버전의 도구를 사용해야 합니다
일반적으로 Windows 시스템에는 반드시 regasm 도구가 내장되어 있습니다
디렉터리 경로는
C:\Windows\Microsoft.NET\Framework64\v2.0.50727\RegAsm.exe
입니다. 64비트 시스템, Framework64 디렉터리. 그렇지 않으면 Framework 디렉터리를 사용하고 RegAsm.exe 파일을 찾을 수 있는 Framework 프레임워크에 해당하는 버전 번호를 선택합니다. gacutil 도구는 창에 포함되어 있습니다. SDK가 설치되어 있지 않은 경우 공식 웹사이트에서 클릭하여 다운로드할 수 있습니다. 기본 설치 후 Frameworkd 버전 4.0 이하의 도구 경로는
C:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\gacutil.exe
버전 4.0이 필요한 경우 경로는 다음과 같습니다.
c:\Program Files\Microsoft SDKs\Windows\v7.1\Bin\NETFX 4.0 Tools\gacutil.exe
3. php.ini
를 구성하고 com.allow_dcom = true를 켜세요
extension_dir 디렉터리에 php_com_dotnet이 있는지 확인하세요
extension=php_com_dotnet.dll을 열거나 추가하세요
4. DLL
64비트 시스템 버전 4.0 my.dll을 예로 들어보겠습니다.
첫 번째 파티에서 생성된 dll을 c:Program FilesMicrosoft SDKsWindowsv7.1BinNETFX 4.0 Tools
c:Program FilesMicrosoft SDKsWindowsv7 디렉터리로 이동합니다. 1BinNETFX 4.0 도구 및 gacutil /i my.dll 실행
C:WindowsMicrosoft.NETFramework64v4.0.30319 디렉터리로 이동하여 regasm my.dll
을 실행합니다.5. DLL 등록 취소
64비트 시스템 버전 4.0 my.dll 가져오기 예를 들어
C:WindowsMicrosoft.NETFramework64v4.0.30319 디렉터리로 이동하여 regasm my.dll /unregister
c:Program FilesMicrosoft SDKsWindowsv7.1BinNETFX 4.0 디렉터리로 이동하여 도구 아래에서 gacutil /u my
php를 실행하여 COM 구성요소를 호출하세요위 내용이 올바르게 구성되면 php 파일에서 호출할 수 있습니다.
$comClass = new COM('namespace.className'); $comClass -> methodName();
에서 COM 메소드가 없다는 메시지가 표시되면 해당 내용을 고려해야 합니다. php의 com 기능이 활성화되었는지 또는 php_com_dotnet.dll이 성공적으로 로드되었는지 여부를 확인하세요 호출된 dll 메서드가 없거나 dll이 등록되지 않았다는 메시지가 표시되면 dll 파일이 성공적으로 등록되었는지 여부를 고려해야 합니다. 권장 학습: "PHP 비디오 튜토리얼"
위 내용은 PHP가 COM 구성요소를 호출할 수 없으면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!