본문 바로가기

IT

암호화통신프로토콜 TLS1.2필수 시대의 외부연동을 위한 PHP설정, Windows Server 2008, IIS7.5,PHP5.6,EC-CUBE2.12


오픈소스(Open Source)인 EC-CUBE를 이욯애서 구축한 쇼핑몰이 있는데, 이곳에서도 TLS1.2관련 문제가 발생했습니다.

백그라운드로 결제대행회사 시스템에 접속해"주문확정,캔슬"등의 정보를 송신하는 부분이 에러입니다.


기존 환경입니다.

---------------------------------

Windows Server 2003

IIS6.0

PHP5.1.2

EC-CUBE 2.12

---------------------------------

TLS1.2대응을 하려면 cURL7.34, OpenSSL 1.0.1이상이 되어야하네요.

위의 버전의 Extension은 PHP5.6버전을 설치하면 된다고합니다.


시행착오들의 정리입니다.


1. 기존환경을 그대로 유지하면서 cURL과 OpenSSL만 버전업해보자.

PHP5.6버전을 다운로드해서 Ext폴더에서

---------------------------------

php_curl.dll

php_openssl.dll

---------------------------------

를 복사해서 넣었습니다.

아예 cURL과 OpenSSL이 작동하지 않습니다.

5.1버전과 5.6버전이 차이가 큰 것으로 생각됩니다.


2.기존환경에 PHP만 버전업하자.

https://windows.php.net/download/

PHP5.6버전을 다운로드합니다.(VC11 x64 Non Thread Safe)


Visual Studio 2012 업데이트 4용 Visual C++ 재배포 가능 패키지를 설치합니다.

https://www.microsoft.com/ko-KR/download/details.aspx?id=30679


작동을 안합니다. ..

php.exe는 유효한 Win32어플리케이션이 아닙니다. (php.exe is not a valid win32 application)

5.1버전과 5.6버전이 차이가 정말 큰가 봅니다.

Windows Server 2003서버에서 PHP5.6을 작동시키기 위해서는 FastCGI를 이용하라는 정보를 확인합니다.

https://www.iis.net/downloads/microsoft/fastcgi-for-iis


FastCGI를 다운로드,설치하고 PHP5.6과의 연동설정을 합니다.

C:\WINDOWS\system32\inetsrv\fcgiext.ini 의 맨 밑에

---------------------------------

[Types]

php=PHP

[PHP]

ExePath=C:\php5.6\php-cgi.exe

---------------------------------

를 직접추가하거나

C:\windows\system32\inetsrv로 이동후 커맨드로 아래를 실행합니다.

---------------------------------

cscript fcgiconfig.js -add -section:"PHP" -extension:php -path:"C:\php5.6\php-cgi.exe"

---------------------------------

C:\php5.6\php-cgi.exe (PHP설치폴더안의 php-cgi.exe의 경로입니다.)


그리고 IIS6.0관리자>>홈디렉토리>>구성>>매핑 에서

---------------------------------

.php를 C:\windows\system32\inetsrv\fcgiext.dll 로 매핑해줍니다.

---------------------------------

추가로 성능향상,보안을 위해php.ini를 수정합니다.

---------------------------------

fastcgi.impersonate = 1

cgi.fix_pathinfo = 1

cgi.force_redirect = 0

---------------------------------

작동을 안합니다...에러의 내용은 같습니다.....


3.전체환경을 바꾸자.

---------------------------------

Windows Server 2008 R2

IIS6.1

PHP 7.1

EC-CUBE 2.12

---------------------------------

당연히 해결로 생각했는데..EC-CUBE 2.12가 PHP7을 지원하지 않습니다..... 쉬운게 없습니다.



결국...

---------------------------------

Windows Server 2008 R2

IIS7.5

PHP 5.6

EC-CUBE 2.12

---------------------------------

으로 몇 군데 EC-CUBE의 에러로 수정은 필요했지만..

결제대행회사 시스템과도 문제없이 통신이 가능했습니다.



전체 설정의 간단정리입니다.



1.EC-CUBE작동을 위한 폴더권한설정(Everyone 읽고실행)

-------------------------------

ECCUBE_HOME¥html¥install¥temp

ECCUBE_HOME¥html¥user_data

ECCUBE_HOME¥html¥cp

ECCUBE_HOME¥html¥upload

ECCUBE_HOME¥data¥install.php

ECCUBE_HOME¥data¥cache

ECCUBE_HOME¥data¥class

ECCUBE_HOME¥data¥Smarty

ECCUBE_HOME¥data¥downloads

ECCUBE_HOME¥data¥logs

-------------------------------

2.PHP.INI

-------------------------------

mbstring.language = Japanese

auto_detect_line_endings = on

output_handler = null

mbstring.internal_encoding = UTF-8

mbstring.encoding_translation = on

mbstring.detect_order = auto

mbstring.substitute_character = none

magic_quotes_gpc = off


//extensions

php_curl.dll

php_gd2.dll

php_mbstring.dll

php_mysql.dll

php_openssl.dll

php_sockets.dll

-------------------------------

3.IIS에 FastCGI로 작동설정

-------------------------------

ECCUBE_HOME¥html 를 홈디렉토리로

-------------------------------


휴우..또 하나 해결했습니다..

반응형