어떤것을 계산하는 DLL을 빌드했습니다. PHP상에서 이 DLL을 실행시킬수 있는 방법
이 있습니까?
간단한 DLL이라도 PHP에서 실행할 방법은 아직 없습니다. 접근가능한 COM서버를
포함하는 DLL이고, IDispatch 인터페이스로 구현되어있다면 가능할수도 있습니다.
'Unsupported variant type: xxxx (0xxxxx)'은 무엇을 의미합니까?
몇가지의 VARIANT 타입과 그 타입간의 조합이 가능합니다. 그들 대부분은 거의
지원이 되고있지만 일부가 아직 구현되어있지 않습니다. 배열은 완전히 지원되지
않습니다. 오직 1차원 배열만이 PHP와 COM사이에서 전달이 가능합니다. 지원되지
않는 다른 타입을 발견했다면 그 타입을 버그 레포트로 알려주기랍니다
(아직 보고되지 않는것들이라면) 그리고 더 자세한 정보도 함께 제공해주십시오.
PHP에서 비주얼한 객체(visual object)를 조작할수 있습니까?
가능합니다. 하지만 PHP는 대부분 웹서버의 환경에서 웹 스크립트 언어로서
이용되고 있습니다. 따라서 서버가 비주얼 객체를 보여주지는 않을것입니다.
응용프로그램 스크립트를 위한 PHP(PHP-GTK같은)를 사용한다면 COM을 통해서
비주얼 객체(visual object)에 접근하고 조작하는데 아무 제한이 없습니다.
세션안에 COM 객체를 저장할 수 있습니까?
그건 안됩니다. COM 인스턴스는 리소스로 취급되므로 오직 단일 스크립트의
문맥에서만 가용한것입니다.
COM 에러를 어떻게 추적할 수 있습니까?
PHP 5에서, COM 확장은 com_exception 예외를
발생합니다. 이를 잡아서 code 멤버를 조사함으로써
다음에 취할 행동을 결정할 수 있습니다.
PHP 4에서는 COM 오류를 PHP 자체에서 제공하는 방법(@, track_errors,
..)으로 추적할 수 없습니다.
펄에서 쓰던 방법으로 PHP 스크립트에서 DLL 파일을 만들수 있습니까?
만들수 없습니다. 재수없게도 PHP를 위해 그런 툴이 존재하지 않습니다.
'Unable to obtain IDispatch interface for CLSID {xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx}'의
의미는 무엇입니까?
이 에러는 다음과 같은 원인일수 있습니다.
CLSID가 잘못되었다
필요한 DLL이 존재하지 않는다
필요한 컴포넌트가 IDispatch 인터페이스로 구현되지 않았다
원격 서버에서 COM 객체를 어떻게 실행할수 있습니까?
로컬 객체를 실행시키는것과 완전히 똑같습니다. 단지 COM 생성자의 두번째 인수에
다른 서버의 IP를 넘겨주면 됩니다.