Windows php 에서 openssl 연동
evernote API 를 Winwdows PHP 에서 테스트 해 보려고 다음 순서로 진행하였다.
- RHEL/CentOS 와 Windows 및 Unix 에 php 설치 에서 Windows 항목을 참고하여 php 설치
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"
- apache 재구동
- git clone git://github.com/evernote/evernote-sdk-php.git
- evernote-sdk-php 로 이동
- sample/client 로 이동
- https://sandbox.evernote.com/api/DeveloperToken.action 에 연결하여 개발용 authToken 생성
- vi EDAMTest.php를 한 후에 $authToken 부분에 위에서 생성된 토큰을 붙여넣기
- php EDAMTest.php 해서 제대로 동작하는지 확인
"Uncaught TTransportException: exception 'TTransportException' with message 'THttpClient: Could not connect to sandbox.evernote.com:443/edam/user'" 와 같은 에러가 발생한다면 openssl 설정이 제대로 안 된 것이다. 다음 내용을 확인하자.
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
- 2번의 PHPIniDir 경로에 있는 php.ini 를 연다.
- extension=php_openssl.dll 이 주석 해제 되었는지 확인한다.
- httpd 서버를 재구동하고 phpinfo(); 함수에서 다음과 같이 openssl 이 표시되는지 확인한다.
- 표시 안 될 경우 php.ini 가 어느 폴더에서 로딩되었는지 확인해 본다.
extension_dir 이 어디를 참고하는지 확인하고 해당 폴더안에 php_openssl.dll 이 있는지 확인해 보고 extension_dir을 절대 경로로 적어준다.
extension_dir = "D:/devel/php-5.3.14-Win32-VC9-x86/ext"