Windows php 에서 openssl 연동

evernote API 를 Winwdows PHP 에서 테스트 해 보려고 다음 순서로 진행하였다.

 

  1. RHEL/CentOS 와 Windows 및 Unix 에 php 설치 에서 Windows 항목을 참고하여 php 설치
  2. apache 의 http.conf 에 다음 내용 추가

    php는 d:\devel\php 에 설치
    LoadModule php5_module "D:/devel/php/php5apache2_2.dll"
    AddType application/x-httpd-php .php
    # 아래 경로가 잘못 설정되어 php에서 https 가 제대로 동작 안 함(-_-)
    PHPIniDir "D:/devel/php"
  3. apache 재구동
  4. git clone git://github.com/evernote/evernote-sdk-php.git
  5. evernote-sdk-php 로 이동
  6. sample/client 로 이동
  7. https://sandbox.evernote.com/api/DeveloperToken.action 에 연결하여 개발용 authToken 생성
  8. vi EDAMTest.php를 한 후에 $authToken 부분에 위에서 생성된 토큰을 붙여넣기
  9. php EDAMTest.php 해서 제대로 동작하는지 확인
  10. "Uncaught TTransportException: exception 'TTransportException' with message 'THttpClient: Could not connect to sandbox.evernote.com:443/edam/user'" 와 같은 에러가 발생한다면 openssl 설정이 제대로 안 된 것이다. 다음 내용을 확인하자.
      (warning) lib/transport/THttpClient.php 의 flush() 를 보면 fopen 호출시 @ 이 붙어있어서 자세한 에러가 출력되지 않는다. @를 제거하면 다음과 같은 에러가 발생한다.

    Warning: fopen() [function.fopen]: Unable to find the wrapper "https" - did you forget to enable it when you configured PHP ? in D:\src\evernote-sdk-php\lib\transport\THttpClient.php on line 190


    1. 2번의 PHPIniDir 경로에 있는 php.ini 를 연다.
    2. extension=php_openssl.dll 이 주석 해제 되었는지 확인한다.
    3. httpd 서버를 재구동하고 phpinfo(); 함수에서 다음과 같이 openssl 이 표시되는지 확인한다.
    4. 표시 안 될 경우 php.ini 가 어느 폴더에서 로딩되었는지 확인해 본다.
    5. extension_dir 이 어디를 참고하는지 확인하고 해당 폴더안에 php_openssl.dll 이 있는지 확인해 보고 extension_dir을 절대 경로로 적어준다.

      extension_dir = "D:/devel/php-5.3.14-Win32-VC9-x86/ext"