:meta-keywords: cubrid php driver, cubrid php api :meta-description: CUBRID PHP driver implements an interface to enable access from application in PHP to CUBRID database. CUBRID PHP driver is written based on CCI API. ************ PHP 드ë¼ì´ë²„ ************ CUBRID PHP 드ë¼ì´ë²„는 PHP로 작성한 ì‘ìš© 프로그램ì—서 CUBRID ë°ì´í„°ë² ì´ìŠ¤ë¥¼ ì‚¬ìš©í• ìˆ˜ 있는 API를 ì œê³µí•œë‹¤. CUBRID PHP 드ë¼ì´ë²„ê°€ ì œê³µí•˜ëŠ” ëª¨ë“ í•¨ìˆ˜ëŠ” ì•žì— **cubrid_** ê°€ 붙는다 (예: cubrid_connect(), cubrid_connect_with_url()). ê³µì‹ CUBRID PHP 드ë¼ì´ë²„는 PECL 패키지로 ì œê³µí•œë‹¤. PECLì€ PHP 확장 ì €ìž¥ì†Œë¡œ, PHP 확장 개발 ë° ë‹¤ìš´ë¡œë“œë¥¼ 위한 íŽ¸ì˜ ê¸°ëŠ¥ì„ ì œê³µí•œë‹¤. PECLì— ëŒ€í•œ ìžì„¸í•œ ë‚´ìš©ì€ http://pecl.php.net/ ì„ ì°¸ê³ í•œë‹¤. CUBRID PHP 드ë¼ì´ë²„는 CCI API를 기반으로 작성ë˜ì—ˆìœ¼ë¯€ë¡œ, CCI API ë° CCIì— ì ìš©ë˜ëŠ” **CCI_DEFAULT_AUTOCOMMIT** ê³¼ ê°™ì€ ì„¤ì • 파ë¼ë¯¸í„°ì— ì˜í–¥ì„ 받는다. .. FIXME: 별ë„로 PHP 드ë¼ì´ë²„를 다운로드하거나 PHP 드ë¼ì´ë²„ì— ëŒ€í•œ ìµœì‹ ì •ë³´ë¥¼ 확ì¸í•˜ë ¤ë©´ http://www.cubrid.org/wiki_apis/entry/cubrid-php-driver ì— ì ‘ì†í•œë‹¤. PHP 설치 ë° ì„¤ì • ================ 가장 ì‰½ê³ ë¹ ë¥´ê²Œ ì‘ìš© í”„ë¡œê·¸ëž¨ì„ ì‹œìŠ¤í…œì— ì„¤ì¹˜í•˜ë ¤ë©´ Ubuntuì— CUBRID와 Apache, PHP를 설치한다. .. FIXME: 설치 ë°©ë²•ì€ http://www.cubrid.org/wiki_apis/entry/install-cubrid-with-apache-and-php-on-ubuntu\ 를 ì°¸ê³ í•œë‹¤. Linux ----- **기본 환경** * ìš´ì˜ì²´ì œ: Linux: 32 비트 ë˜ëŠ” 64비트 * 웹 서버: Apache * PHP: 5.2 ë˜ëŠ” 5.3( https://www.php.net/downloads.php ) * PHP: 5.x, ë˜ëŠ” 7.x (https://www.php.net/downloads.php) * 편ì˜ìƒ ìµœì‹ PHP 5.6.x, 7.1.x ë° 7.4.x를 참조 ë°”ëžë‹ˆë‹¤. **PECLì„ ì´ìš©í•œ 설치** **PECL** ì´ ì„¤ì¹˜ë˜ì–´ 있다면, **PECL** ì´ ì†ŒìŠ¤ì½”ë“œ 다운로드 ë° ì»´íŒŒì¼ì„ 수행하므로 다ìŒê³¼ ê°™ì´ ê°„ë‹¨í•˜ê²Œ CUBRID PHP 드ë¼ì´ë²„를 ì„¤ì¹˜í• ìˆ˜ 있다. .. FIXME: **PECL** ì´ ì„¤ì¹˜ë˜ì–´ìžˆì§€ 않다면 http://www.cubrid.org/wiki_apis/entry/installing-cubrid-php-driver-using-pecl\ ì„ ì°¸ê³ í•˜ì—¬ PECLì„ ì„¤ì¹˜í•œë‹¤. #. 다ìŒê³¼ ê°™ì€ ëª…ë ¹ì–´ë¥¼ ìž…ë ¥í•˜ì—¬ CUBRID PHP 드ë¼ì´ë²„ ìµœì‹ ë²„ì „ì„ ì„¤ì¹˜í•œë‹¤. :: sudo pecl install cubrid 하위 ë²„ì „ì˜ ë“œë¼ì´ë²„ê°€ 필요하면 다ìŒê³¼ ê°™ì´ ì„¤ì¹˜í• ë²„ì „ì„ ì§€ì •í• ìˆ˜ 있다. :: sudo pecl install cubrid-10.1.0.0002 설치가 ì§„í–‰ë˜ëŠ” ì¤‘ì— **CUBRID base install dir autodetect :** ë¼ëŠ” 프롬프트가 표시ëœë‹¤. 설치를 ì›í™œí•˜ê²Œ 진행하기 위해서 CUBRID를 설치한 ë””ë ‰í„°ë¦¬ì˜ ì „ì²´ 경로를 ìž…ë ¥í•œë‹¤. 예를 들어 CUBRIDê°€ **/home/cubridtest/CUBRID** ë””ë ‰í„°ë¦¬ì— ì„¤ì¹˜ë˜ì—ˆë‹¤ë©´, **/home/cubridtest/CUBRID** 를 ìž…ë ¥í•œë‹¤. #. ì„¤ì • 파ì¼ì„ ìˆ˜ì •í•œë‹¤. CentOS 6.0 ì´ìƒ ë²„ì „ì´ë‚˜ Fedora 15 ì´ìƒ ë²„ì „ì„ ì‚¬ìš©í•œë‹¤ë©´ **cubrid.ini** 파ì¼ì„ ìƒì„±í•˜ê³ ë‚´ìš©ì— **extension=cubrid.so** 를 ìž…ë ¥í•˜ì—¬ **/etc/php.d** ë””ë ‰í„°ë¦¬ì— ì €ìž¥í•œë‹¤. 다른 ìš´ì˜ì²´ì œë¥¼ 사용한다면 **php.ini** íŒŒì¼ ëì— ë‹¤ìŒ ë‘ ì¤„ì˜ ë‚´ìš©ì„ ì¶”ê°€í•œë‹¤. **php.ini** 파ì¼ì˜ 기본 위치는 **/etc/php5/apache2** ë˜ëŠ” **/etc** ì´ë‹¤. :: [CUBRID] extension=cubrid.so #. ë³€ê²½ëœ ë‚´ìš©ì„ ë°˜ì˜í•˜ë ¤ë©´ 웹 서버를 재시작한다. **apt-getì„ ì´ìš©í•˜ì—¬ Ubuntuì— ì„¤ì¹˜** #. PHPê°€ 설치ë˜ì–´ 있지 않다면, ë‹¤ìŒ ëª…ë ¹ì–´ë¡œ PHP를 설치한다. :: sudo apt-get install php5 or for PHP version 7 sudo add-apt-repository ppa:ondrej/php sudo apt-get update sudo apt-get install php7.1 #. **apt-get** 를 ì´ìš©í•˜ì—¬ CUBRID PHP 드ë¼ì´ë²„를 ì„¤ì¹˜í•˜ë ¤ë©´, Ubuntuê°€ 패키지 다운로드 위치를 ì•Œê³ ì¸ë±ìŠ¤ë¥¼ ì—…ë°ì´íŠ¸í•˜ë„ë¡ CUBRID ì €ìž¥ì†Œë¥¼ 추가해야 한다. :: sudo add-apt-repository ppa:cubrid/cubrid sudo apt-get update #. 다ìŒê³¼ ê°™ì´ ë“œë¼ì´ë²„를 설치한다. :: sudo apt-get install php5-cubrid ìµœì‹ ë²„ì „ë³´ë‹¤ 하위 ë²„ì „ì„ ì„¤ì¹˜í•˜ë ¤ë©´ 다ìŒê³¼ ê°™ì´ ë²„ì „ì„ ëª…ì‹œí•œë‹¤. :: sudo apt-get install php5-cubrid-8.3.1 위 ëª…ë ¹ì–´ëŠ” **cubrid.so** 드ë¼ì´ë²„를 **/usr/local/lib/php/*** ë””ë ‰í„°ë¦¬ì— ë³µì‚¬í•˜ê³ ë‹¤ìŒê³¼ ê°™ì€ ì„¤ì •ì„ **/etc/php.ini** 파ì¼ì— 추가한다. :: [PHP_CUBRID] extension=cubrid.so #. PHPê°€ ëª¨ë“ˆì„ ì½ì–´ë“¤ì´ë„ë¡ Apache 서버를 재시작한다. :: service apache2 restart Windows ------- **기본 환경** * CUBRID: 9.3.x ì´ìƒ * ìš´ì˜ì²´ì œ: Windows 32 비트 ë˜ëŠ” 64비트 * 웹 서버: Apache ë˜ëŠ” IIS * PHP: 5.6.x, 7.1.x ë˜ëŠ” 7.4.x(https://windows.php.net/download/) * PHP 7.1.x ë˜ëŠ” 7.4.x ì˜ ê²½ìš° 32bit ë˜ëŠ” 64bitìš© Microsoft Visual C ++ 2015 ìž¬ë°°í¬ ê°€ëŠ¥ 패키지를 설치해야 한다. **CUBRID PHP API Installer를 사용한 설치** CUBRID PHP API Installer는 ìžë™ìœ¼ë¡œ CUBRID와 PHPì˜ ë²„ì „ì„ ì¸ì‹í•˜ì—¬ 해당 ë²„ì „ì— ë§žëŠ” 드ë¼ì´ë²„를 설치하는 Windows 설치 관리ìžì´ë‹¤. 드ë¼ì´ë²„를 기본 PHP 확장 ë””ë ‰í„°ë¦¬( **C:\\Program Files\\PHP\\ext** )ì— ë³µì‚¬í•˜ê³ **php.ini** 파ì¼ì„ ìˆ˜ì •í•œë‹¤. 여기ì—서는 CUBRID PHP API Installer를 ì´ìš©í•˜ì—¬ Windowsì— CUBRID PHP í™•ìž¥ì„ ì„¤ì¹˜í•˜ëŠ” ë°©ë²•ì„ ì„¤ëª…í•œë‹¤. CUBRID PHP 드ë¼ì´ë²„를 ì œê±°í•˜ë ¤ë©´ CUBRID PHP API Installer를 다시 실행하여 프로그램 ì œê±°ë¥¼ ì„ íƒí•œë‹¤. ì´ ë°©ë²•ìœ¼ë¡œ CUBRID PHP 드ë¼ì´ë²„를 ì œê±°í•˜ë©´ ì„¤ì¹˜í• ë•Œ ë°œìƒí•œ ëª¨ë“ ë³€ê²½ 사í•ì´ ë³µêµ¬ëœë‹¤. CUBRID PHP 드ë¼ì´ë²„를 설치하기 ì „ì— PHP와 CUBRIDì˜ ê²½ë¡œê°€ 시스템 ë³€ìˆ˜ì˜ **Path** ì— ì¶”ê°€ë˜ì–´ 있어야 한다. #. ë‹¤ìŒ ì£¼ì†Œì—서 CUBRID PHP API Installer를 다운로드한다. 아래 주소ì—서는 ëª¨ë“ CUBRID ë²„ì „ì— ëŒ€í•œ CUBRID PHP 드ë¼ì´ë²„를 ì œê³µí•œë‹¤. https://www.cubrid.org/downloads#php #. CUBRID PHP API Installer를 ì‹¤í–‰í•˜ê³ [다ìŒ]ì„ í´ë¦í•˜ì—¬ 설치를 진행한다. #. BSD ë¼ì´ì„ 스 ì¡°í•ì— ë™ì˜í•˜ê³ [다ìŒ]ì„ í´ë¦í•œë‹¤. #. CUBRID PHP API Installer를 ì„¤ì¹˜í• ê²½ë¡œë¥¼ ì§€ì •í•˜ê³ [다ìŒ]ì„ í´ë¦í•œë‹¤. PHP를 설치한 경로가 ì•„ë‹ˆë¼ ì˜ˆë¥¼ 들면 **C:\\Program Files\\CUBRID PHP API** 와 ê°™ì€ ìƒˆë¡œìš´ 경로를 ìž…ë ¥í•´ì•¼ 한다. #. Windows [시작] ë©”ë‰´ì˜ í´ë” ì´ë¦„ì„ ì§€ì •í•˜ê³ [설치]를 í´ë¦í•œë‹¤. ì„¤ì¹˜ì— ì‹¤íŒ¨í•˜ë©´ ì•„ëž˜ì˜ **환경 변수 ì„¤ì •** ì„ ì°¸ê³ í•œë‹¤. #. 설치를 마치면 [마침]ì„ í´ë¦í•œë‹¤. #. 변경 ë‚´ìš©ì„ ë°˜ì˜í•˜ê¸° 위해서 웹 서버를 재시작한다. ì œëŒ€ë¡œ 설치ë˜ì—ˆëŠ”ì§€ 확ì¸í•˜ë ¤ë©´ phpinfo()를 실행한다. .. image:: /images/image56.png **시스템 환경 변수 ì„¤ì •** 설치 ì¤‘ì— ì˜¤ë¥˜ê°€ ë°œìƒí•˜ë©´ 시스템 환경 변수가 ì œëŒ€ë¡œ ì„¤ì •ë˜ì—ˆëŠ”ì§€ 확ì¸í•´ì•¼ 한다. CUBRID를 설치하면 ìžë™ìœ¼ë¡œ 설치 경로가 시스템 환경 변수 **Path** ì— ì¶”ê°€ëœë‹¤. 시스템 환경 변수가 ì œëŒ€ë¡œ 설치ë˜ì—ˆëŠ”ì§€ 확ì¸í•˜ë ¤ë©´, Windowsì˜ [시작] > [ëª¨ë“ í”„ë¡œê·¸ëž¨] > [보조프로그램] > [ëª…ë ¹ 프롬프트]를 ì‹¤í–‰í•˜ê³ ë‹¤ìŒ ìž‘ì—…ì„ ìˆ˜í–‰í•œë‹¤. #. ë‹¤ìŒ ëª…ë ¹ì„ ìž…ë ¥í•œë‹¤. :: php --version 시스템 환경 변수가 ì œëŒ€ë¡œ ì„¤ì •ë˜ì—ˆë‹¤ë©´ 아래와 ê°™ì´ PHP ë²„ì „ì„ í™•ì¸í• 수 있다. :: PHP 5.6.30 (cli) (built: Jun 13 2017 16:16:30) ë˜ëŠ” 7.1.x PHP 7.1.7 (cli) (built: Aug 3 2017 10:59:35) ( NTS ) C:\Users\Administrator>php --version PHP 5.6.30 (cli) (built: Jan 18 2017 19:47:28) #. ë‹¤ìŒ ëª…ë ¹ì„ ìž…ë ¥í•œë‹¤. :: cubrid --version 시스템 환경 변수가 ì œëŒ€ë¡œ ì„¤ì •ë˜ì—ˆë‹¤ë©´ 아래와 ê°™ì´ CUBRID ë²„ì „ì„ í™•ì¸í• 수 있다. :: C:\Users\Administrator>cubrid --version cubrid.exe (CUBRID utilities) CUBRID 9.3 (9.3.8.0003) (64bit release build for Windows_NT) (Apr 11 2017 11:54:08) 위와 ê°™ì€ ê²°ê³¼ê°€ ì¶œë ¥ë˜ì§€ 않는다면 PHP와 CUBRIDê°€ 설치ë˜ì§€ ì•Šì•˜ì„ ê°€ëŠ¥ì„±ì´ ë†’ìœ¼ë¯€ë¡œ PHP와 CUBRID를 다시 설치한다. 만약 다시 ì„¤ì¹˜í•´ë„ ì‹œìŠ¤í…œ 환경 변수가 ì œëŒ€ë¡œ ì„¤ì •ë˜ì§€ 않는다면, 다ìŒê³¼ ê°™ì´ ìˆ˜ë™ìœ¼ë¡œ 시스템 환경 변수를 ì„¤ì •í•œë‹¤. #. [ë‚´ 컴퓨터]를 마우스 오른쪽 버튼으로 í´ë¦í•˜ì—¬ [ì†ì„±]ì„ ì„ íƒí•˜ë©´ [시스템 ì†ì„±] 대화 ìƒìžê°€ 나타난다. #. [ê³ ê¸‰] íƒì„ ì„ íƒí•˜ê³ [환경 변수]를 í´ë¦í•œë‹¤. #. [시스템 변수]ì—서 **Path** 를 ì„ íƒí•˜ê³ [편집]ì„ í´ë¦í•œë‹¤. #. 변수 ê°’ì— CUBRID와 PHPì˜ ì„¤ì¹˜ 경로를 추가한다. ê° ê²½ë¡œëŠ” ì„¸ë¯¸ì½œë¡ (;)으로 구분한다. 만약 PHP를 **C:\\Program Files\\PHP** ë””ë ‰í„°ë¦¬ì— ì„¤ì¹˜í•˜ê³ CUBRID를 **C:\\CUBRID\\bin** ë””ë ‰í„°ë¦¬ì— ì„¤ì¹˜í–ˆë‹¤ë©´, 변수 ê°’ì˜ ëì— **C:\\CUBRID\\bin;C:\\Program Files\\PHP** 를 ë§ë¶™ì¸ë‹¤. #. [확ì¸]ì„ í´ë¦í•œë‹¤. #. 앞ì—서 설명한 방법으로 시스템 환경 변수가 ì œëŒ€ë¡œ ì„¤ì •ë˜ì—ˆëŠ”ì§€ 확ì¸í•œë‹¤. **ë¹Œë“œëœ ë“œë¼ì´ë²„ 다운로드 ë° ì„¤ì¹˜** ìš´ì˜ì²´ì œì™€ PHP ë²„ì „ì— ë§žëŠ” Windowsìš© CUBRID PHP/PDO 드ë¼ì´ë²„를 https://www.cubrid.org/downloads#php ì—서 다운로드한다. PHP 드ë¼ì´ë²„를 다운로드하면 **php_cubrid.dll** 파ì¼ì„ ë³¼ 수 있으며, PDO 드ë¼ì´ë²„를 다운로드하면 **php_pdo_cubrid.dll** 파ì¼ì„ ë³¼ 수 있다. 드ë¼ì´ë²„를 설치하는 ë°©ë²•ì€ ë‹¤ìŒê³¼ 같다. #. 드ë¼ì´ë²„ 파ì¼ì„ 기본 PHP 확장 ë””ë ‰í„°ë¦¬( **C:\\Program Files\\PHP\\ext** )ì— ë³µì‚¬í•œë‹¤. #. 시스템 환경 변수를 ì„¤ì •í•œë‹¤. 시스템 환경 변수 **PHPRC** ì˜ ê°’ìœ¼ë¡œ **C:\\Program Files\\PHP** ê°€ ì„¤ì •ë˜ê³ , **Path** ì— **%PHPRC%** 와 **%PHPRC\\ext** ê°€ 추가ë˜ì—ˆëŠ”ì§€ 확ì¸í•œë‹¤. #. **php.ini** ( **C:\\Program Files\\PHP\\php.ini** ) 파ì¼ì„ ì—´ì–´ ëì— ë‹¤ìŒ ë‘ ì¤„ì„ ì¶”ê°€í•œë‹¤. :: [PHP_CUBRID] extension=php_cubrid.dll PDO 드ë¼ì´ë²„ì˜ ê²½ìš°ì—는 ë‹¤ìŒ ë‚´ìš©ì„ ì¶”ê°€í•œë‹¤. :: [PHP_PDO_CUBRID] extension = php_pdo_cubrid.dll #. 웹 서버를 재시작한다. .. _how-to-php-driver-build: PHP 드ë¼ì´ë²„ 빌드 ================= Linux ----- 여기ì—서는 Linuxì—서 CUBRID PHP 드ë¼ì´ë²„를 빌드하는 ë°©ë²•ì„ ì„¤ëª…í•œë‹¤. **환경 ì„¤ì •** * CUBRID: CUBRID를 설치한다. ì‹œìŠ¤í…œì— í™˜ê²½ 변수 **%CUBRID%** ê°€ ì •ì˜ë˜ì–´ 있는지 확ì¸í•œë‹¤. * PHP 5.6.x , 7.1.x ë˜ëŠ” 7.4.x 소스코드: PHP 5.3 소스코드를 ë‹¤ìŒ ì£¼ì†Œì—서 다운로드한다. https://www.php.net/downloads.php * Apache 2: PHP í…ŒìŠ¤íŠ¸ì— Apache 2를 ì‚¬ìš©í• ìˆ˜ 있다. * CUBRID PHP 드ë¼ì´ë²„ 소스코드: https://www.cubrid.org/downloads#php ì—서 CUBRID ë²„ì „ì— ë§žëŠ” CUBRID PHP 드ë¼ì´ë²„ì˜ ì†ŒìŠ¤ì½”ë“œë¥¼ 다운로드한다. * Linux ë˜ëŠ” Mac ì—서는 CCI 드ë¼ì´ë²„ 빌드를 í•˜ë ¤ë©´ GNU Developer Toolset 8 ë˜ëŠ” ê·¸ ì´ìƒì´ 필요하다. **CUBRID PHP 드ë¼ì´ë¸Œ 빌드** #. PHP 소스코드를 ì••ì¶• í•´ì œí•˜ì—¬ 해당 ë””ë ‰í„°ë¦¬ë¡œ ì´ë™í•œë‹¤. :: $> tar zxvf php-<version>.tar.gz (or tar jxvf php-<version>.tar.bz2) $> cd php-<version>/ext #. phpize를 실행한다. phpizeì— ëŒ€í•œ ë‚´ìš©ì€ :ref:`ì°¸ê³ ì‚¬í• <phpize-remark>` ì„ ì°¸ê³ í•œë‹¤. :: cubrid-php> /usr/bin/phpize #. 프로ì 트를 ì„¤ì •í•œë‹¤. ì„¤ì •ì„ ì‹¤í–‰í•˜ê¸° ì „ì— ë¨¼ì € **./configure -h** 를 실행하여 ì„¤ì • ì˜µì…˜ì„ í™•ì¸í•˜ëŠ” ê²ƒì„ ê¶Œìž¥í•œë‹¤. ì„¤ì • ë°©ë²•ì€ ë‹¤ìŒê³¼ 같다(Apache 2ê°€ **/usr/local** ì— ì„¤ì¹˜ë˜ì–´ ìžˆë‹¤ê³ ê°€ì •í•œë‹¤). :: cubrid-php>./configure --with-cubrid --with-php-config=/usr/local/bin/php-config * \-\-with-cubrid=shared: CUBRID ì§€ì›ì„ í¬í•¨í•œë‹¤. * \-\-with-php-config=PATH: ì ˆëŒ€ 경로를 í¬í•¨í•œ php-configì˜ íŒŒì¼ ì´ë¦„ì„ ìž…ë ¥í•œë‹¤. #. 프로ì 트를 빌드한다. 프로ì 트가 성공ì 으로 빌드ë˜ë©´ **/modules** ë””ë ‰í„°ë¦¬ì— **cubrid.so** 파ì¼ì´ ìƒì„±ëœë‹¤. #. **cubrid.so** 파ì¼ì„ **/usr/local/php/lib/php/extensions** ë””ë ‰í„°ë¦¬ì— ë³µì‚¬í•œë‹¤. :: cubrid-php> mkdir /usr/local/php/lib/php/extensions cubrid-php> cp modules/cubrid.so /usr/local/php/lib/php/extensions #. **php.ini** 파ì¼ì— **extension_dir** ë³€ìˆ˜ì— PHP í™•ìž¥ì˜ ê²½ë¡œë¥¼ ìž…ë ¥í•˜ê³ **extension** ë³€ìˆ˜ì— CUBRID PHP 드ë¼ì´ë²„ íŒŒì¼ ì´ë¦„ì„ ìž…ë ¥í•œë‹¤. :: extension_dir = "/usr/local/php/lib/php/extension/no-debug-zts-xxx" extension = cubrid.so **CUBRID PHP 드ë¼ì´ë²„ 설치 확ì¸** #. 다ìŒê³¼ ê°™ì€ ë‚´ìš©ì˜ **test.php** 파ì¼ì„ ìƒì„±í•œë‹¤. .. code-block:: php <?php phpinfo(); ?> #. 웹 브ë¼ìš°ì €ë¡œ \http://localhost/test.php ì— ì ‘ì†í•˜ì—¬ ë‹¤ìŒ ë‚´ìš©ì´ ë³´ì´ëŠ”ì§€ 확ì¸í•œë‹¤. ë‹¤ìŒ ë‚´ìš©ì´ ë³´ì´ë©´ 설치가 ì™„ë£Œëœ ê²ƒì´ë‹¤. +------------+-------------+ | CUBRID | Value | +============+=============+ | Version | 10.1.0.XXXX | +------------+-------------+ .. _phpize-remark: **ì°¸ê³ ì‚¬í•** phpize는 PHP í™•ìž¥ì˜ ì»´íŒŒì¼ì„ 준비하는 ì…¸ 스í¬ë¦½íŠ¸ë¡œ, ì¼ë°˜ì 으로 PHP를 ì„¤ì¹˜í• ë•Œ ìžë™ìœ¼ë¡œ 설치ëœë‹¤. 만약 phpizeê°€ 설치ë˜ì–´ 있지 않으면 다ìŒê³¼ ê°™ì€ ë°©ë²•ìœ¼ë¡œ ì„¤ì¹˜í• ìˆ˜ 있다. #. PHP 소스코드를 다운로드한다. PHP í™•ìž¥ì„ ì‚¬ìš©í• ë²„ì „ê³¼ ì¼ì¹˜í•˜ëŠ” ë²„ì „ì„ ë‹¤ìš´ë¡œë“œí•´ì•¼ 한다. 다운로드한 PHP 소스코드를 ì••ì¶• í•´ì œí•˜ê³ ì†ŒìŠ¤ì½”ë“œì˜ ìµœìƒìœ„ ë””ë ‰í„°ë¦¬ë¡œ ì´ë™í•œë‹¤. :: $> tar zxvf php-<version>.tar.gz (or tar jxvf php-<version>.tar.bz2) $> cd php-<version> #. 프로ì 트를 ì„¤ì •í•˜ê³ , 빌드한 후 설치한다. **\-\-prefix** 옵션으로 PHP를 ì„¤ì¹˜í• ë””ë ‰í„°ë¦¬ë¥¼ ì§€ì •í• ìˆ˜ 있다. :: php-root> ./configure --prefix=prefix_dir; make; make install #. phpize는 **prefix_dir/bin** ë””ë ‰í„°ë¦¬ì— ìœ„ì¹˜í•œë‹¤. Windows ------- 여기ì—서는 Windowsì—서 CUBRID PHP 드ë¼ì´ë²„를 빌드하는 ë°©ë²•ì„ ì„¤ëª…í•œë‹¤. ì–´ë–¤ ë²„ì „ì„ ì„ íƒí•´ì•¼ í• ì§€ 알 수 없는 경우 ë‹¤ìŒ ë‚´ìš©ì„ ì°¸ê³ í•œë‹¤. Apache.orgì—서 Apache 빌드시 PHP를 모듈로 사용하는 경우(권장ë˜ì§€ 않ìŒ) Visual Studio 6 컴파ì¼ëŸ¬ë¡œ ì»´íŒŒì¼ ëœ VC6 PHPë²„ì „ì„ ì‚¬ìš©í•´ì•¼ 한다. Apache.org ë°”ì´ë„ˆë¦¬ì™€ 함께 VC11+ ë²„ì „ì˜ PHP를 사용하면 안ëœë‹¤. Apacheì—서는 PHPì˜ Thread Safe(TS) ë²„ì „ì„ ì‚¬ìš©í•´ì•¼ 한다. * PHP ë²„ì „ 5.5.x ì´ìƒì„ 사용하는 경우 VC11 ë²„ì „ì„ ì‚¬ìš©í•´ì•¼ 한다. (Visual Studio 2012) * PHP ë²„ì „ 7.1.x ì´ìƒì„ 사용하는 경우 VC14 ë²„ì „ì„ ì‚¬ìš©í•´ì•¼ 한다. (Visual Studio 2015) VC11 ë° VC14 ë²„ì „ì€ ê°ê° Visual Studio 2012 ë° 2015 컴파ì¼ëŸ¬ë¡œ 컴파ì¼ëœë‹¤. VC11 ë˜ëŠ” VC14 ë²„ì „ì€ ì„±ëŠ¥ê³¼ ì•ˆì •ì„±ì´ ë”ìš± í–¥ìƒë˜ì—ˆë‹¤. PHPì˜ ìµœì‹ ë²„ì „ì€ VC11, VC14 (ê°ê° Visual Studio 2012 ë˜ëŠ” 2015 컴파ì¼ëŸ¬)로 빌드ë˜ë©° 성능 ë° ì•ˆì •ì„±ì´ í–¥ìƒë˜ì—ˆë‹¤. * VC11 ì—서 빌드를 하기 위해서는 Visual C ++ Redistributable for Visual Studio 2012 x86 ë˜ëŠ” x64ê°€ 설치ë˜ì–´ 있어야 한다. * VC14 ì—서 빌드를 하기 위해서는 Visual C ++ Redistributable for Visual Studio 2015 x86 ë˜ëŠ” x64ê°€ 설치ë˜ì–´ 있어야 한다. **VC11를 ì´ìš©í•˜ì—¬ PHP 5.6.x CUBRID PHP 드ë¼ì´ë²„ 빌드** **환경 ì„¤ì •** * CUBRID: CUBRID를 설치한다. ì‹œìŠ¤í…œì— í™˜ê²½ 변수 **%CUBRID%** ê°€ ì •ì˜ë˜ì–´ 있는지 확ì¸í•œë‹¤. * Visual Studio 2012: makefileì„ ìž˜ 다룰 수 있는 사용ìžë¼ë©´, Visual Studio ëŒ€ì‹ ì— ë¬´ë£Œì¸ Visual C++ Express Editionì´ë‚˜ Windows SDK ì— í¬í•¨ëœ VC++ 11 컴파ì¼ëŸ¬ë¥¼ ì‚¬ìš©í• ìˆ˜ 있다. Windowsì—서 CUBRID PHP VC11 드ë¼ì´ë²„를 ì‚¬ìš©í•˜ë ¤ë©´ Visual C++ Redistributable Packageê°€ 설치ë˜ì–´ 있어야 한다. * PHP 5.6.x ë°”ì´ë„ˆë¦¬: VC11 x86 Non Thread Safe ë˜ëŠ” VC11 x86 Thread Safe를 ì‚¬ìš©í• ìˆ˜ 있다. 시스템 환경 변수 **%PHPRC%** ê°€ ì œëŒ€ë¡œ ì •ì˜ë˜ì–´ 있어야 한다. VC11 프로ì 트 ì†ì„±ì—서 [Linker] > [General]ì„ ì„ íƒí•˜ë©´ [Additional Library Directories]ì—서 **$(PHPRC)** ê°€ 사용ë˜ëŠ” ê²ƒì„ ë³¼ 수 있다. .. image:: /images/image57.png * PHP 5.6.x 소스코드: ë°”ì´ë„ˆë¦¬ ë²„ì „ì— ë§žëŠ” 소스코드를 다운로드해야 한다. PHP 5.6.x 소스코드를 다운로드한 후 ì••ì¶• í•´ì œí•˜ê³ , 시스템 환경 변수 **%PHP5_SRC%** 를 추가하여 PHP 5.6.x ì†ŒìŠ¤ì½”ë“œì˜ ê²½ë¡œë¥¼ 값으로 ì„¤ì •í•œë‹¤. VC11 프로ì 트 ì†ì„±ì—서 [C/C++] > [General]ì„ ì„ íƒí•˜ë©´ [Additional Library Directories]ì—서 **$(PHP5_SRC)** ê°€ 사용ë˜ëŠ” ê²ƒì„ ë³¼ 수 있다. .. image:: /images/image58.png * CUBRID PHP 드ë¼ì´ë²„ 소스코드: https://www.cubrid.org/downloads#php ì—서 CUBRID ë²„ì „ì— ë§žëŠ” CUBRID PHP 드ë¼ì´ë²„ì˜ ì†ŒìŠ¤ì½”ë“œë¥¼ 다운로드한다. .. note:: PHP 5.6.xì„ ì†ŒìŠ¤ì½”ë“œì—서 ë¹Œë“œí• í•„ìš”ëŠ” 없지만 PHP 5.6.x 프로ì 트를 ì„¤ì •í•´ì•¼ 한다. PHP 5.6.x 프로ì 트를 ì„¤ì •í•˜ì§€ 않으면 VC11ì—서 config.w32.h í—¤ë” íŒŒì¼ì„ ì°¾ì„ ìˆ˜ 없다는 메시지가 ì¶œë ¥ëœë‹¤. ì„¤ì • ë°©ë²•ì€ ë‹¤ìŒ ì£¼ì†Œë¥¼ ì°¸ê³ í•œë‹¤. https://wiki.php.net/internals/windows/stepbystepbuild **CUBRID PHP 드ë¼ì´ë²„ 빌드** #. 다운로드한 CUBRID PHP 드ë¼ì´ë²„ ì†ŒìŠ¤ì½”ë“œì˜ **\\win** ë””ë ‰í„°ë¦¬ì— ìžˆëŠ” **php_cubrid.vcproj** 파ì¼ì„ ì—´ê³ , ì™¼ìª½ì˜ [Solution Explorer] ì°½ì—서 **php_cubrid** 를 마우스 오른쪽 버튼으로 í´ë¦í•˜ì—¬ [Properties]를 ì„ íƒí•œë‹¤. .. image:: /images/image59.png #. [Property Page] 대화 ìƒìžì—서 [Configuration Manager]ì„ í´ë¦í•œë‹¤. [Project context]ì˜ [Configuration]ì—서 네 가지 ì„¤ì •(Release_TS, Release_NTS, Debug_TS and Debug_NTS) 중 ì›í•˜ëŠ” ê°’ì„ ì„ íƒí•˜ê³ [닫기]를 í´ë¦í•œë‹¤. .. image:: /images/image60.png #. ì„¤ì •ì„ ë§ˆì¹œ 후ì—는 [OK]를 í´ë¦í•œ 후, <F7> 키를 눌러 컴파ì¼í•œë‹¤. #. **php_cubrid.dll** 파ì¼ì„ 빌드한 후ì—는 PHPê°€ **php_cubrid.dll** 파ì¼ì„ PHP 확장으로 ì¸ì‹í•˜ë„ë¡ ë‹¤ìŒ ìž‘ì—…ì„ ìˆ˜í–‰í•œë‹¤. * PHP를 설치한 í´ë”ì— **cubrid** í´ë”를 ìƒì„±í•˜ê³ 해당 í´ë”ì— **php_cubrid.dll** 파ì¼ì„ 복사한다. **%PHPRC%\\ext** ë””ë ‰í„°ë¦¬ê°€ 있다면 ì´ ë””ë ‰í„°ë¦¬ì— **php_cubrid.dll** 파ì¼ì„ ë³µì‚¬í•´ë„ ëœë‹¤. * In **php.ini** 파ì¼ì˜ **extension_dir** ë³€ìˆ˜ì˜ ê°’ìœ¼ë¡œ **php_cubrid.dll** 파ì¼ì˜ 경로를 ìž…ë ¥í•˜ê³ , **extension** ë³€ìˆ˜ì˜ ê°’ìœ¼ë¡œ **php_cubrid.dll** ì„ ìž…ë ¥í•œë‹¤. **VC14ì„ ì´ìš©í•˜ì—¬ PHP 7.1.xìš© CUBRID PHP 드ë¼ì´ë²„ 빌드** **환경 ì„¤ì •** * CUBRID: CUBRID를 설치한다. ì‹œìŠ¤í…œì— í™˜ê²½ 변수 **%CUBRID%** ê°€ ì •ì˜ë˜ì–´ 있는지 확ì¸í•œë‹¤. * Windows SDKì— í¬í•¨ ëœ ë¬´ë£Œ Visual C++ Express Edition ë˜ëŠ” Visual C++ 14 컴파ì¼ëŸ¬ë¥¼ ëª¨ë‘ ì‚¬ìš©í• ìˆ˜ 있다. CUBRID PHP VC14 드ë¼ì´ë²„를 ì‚¬ìš©í•˜ë ¤ë©´ ì‹œìŠ¤í…œì— Microsoft Visual C++ Redistributable Packageê°€ 설치ë˜ì–´ 있어야 한다. * PHP 7.1.x ë°”ì´ë„ˆë¦¬: VC14 x86 Non Thread Safe ë˜ëŠ” VC6 x86 Thread Safe를 ì‚¬ìš©í• ìˆ˜ 있다. 시스템 환경 변수 **%PHPRC%** ê°€ ì œëŒ€ë¡œ ì •ì˜ë˜ì–´ 있어야 한다. VC14 프로ì íŠ¸ì˜ [Project Settings]ì„ ì—´ë©´ [Link] íƒì˜ [Additional library path]ì—서 **$(PHPRC)** ê°€ 사용ë˜ëŠ” ê²ƒì„ ë³¼ 수 있다. .. image:: /images/image61.png * PHP 7.1.x 소스코드: ë°”ì´ë„ˆë¦¬ ë²„ì „ì— ë§žëŠ” 소스코드를 다운로드해야 한다. PHP 소스코드를 다운로드한 후 ì••ì¶• í•´ì œí•˜ê³ , 시스템 환경 변수 **%PHP7_SRC%** 를 추가하여 PHP ì†ŒìŠ¤ì½”ë“œì˜ ê²½ë¡œë¥¼ 값으로 ì„¤ì •í•œë‹¤. VC11 프로ì íŠ¸ì˜ [Project Settings]ì„ ì—´ë©´ [C/C++] íƒì˜ [Additional include directories]ì—서 **$(PHP7_SRC)** ê°€ 사용ë˜ëŠ” ê²ƒì„ ë³¼ 수 있다. .. image:: /images/image62.png * CUBRID PHP 드ë¼ì´ë²„ 소스코드: https://www.cubrid.org/downloads#php ì—서 CUBRID ë²„ì „ì— ë§žëŠ” CUBRID PHP 드ë¼ì´ë²„ì˜ ì†ŒìŠ¤ì½”ë“œë¥¼ 다운로드한다. .. note:: PHP 7.1.x 소스코드로 CUBRID PHP 드ë¼ì´ë²„를 빌드한다면, Windowsì—서 PHP 7.1.x를 ì„¤ì •í•´ì•¼ 한다. PHP 7.1.x 프로ì 트를 ì„¤ì •í•˜ì§€ 않으면 VC9ì—서 config.w32.h í—¤ë” íŒŒì¼ì„ ì°¾ì„ ìˆ˜ 없다는 메시지가 ì¶œë ¥ëœë‹¤. ì„¤ì • ë°©ë²•ì€ ë‹¤ìŒ ì£¼ì†Œë¥¼ ì°¸ê³ í•œë‹¤. https://wiki.php.net/internals/windows/stepbystepbuild **CUBRID PHP 드ë¼ì´ë²„ 빌드** #. 다운로드한 CUBRID PHP 드ë¼ì´ë²„ 소스코드ì—서 **php_cubrid.dsp** 파ì¼ì„ ì—´ê³ , 메뉴ì—서 [Build] > [Set Active Configuration]를 ì„ íƒí•œë‹¤. There are four configurations (Win32 Release_TS, Win32 Release, Win32 Debug_TS and Win32 Debug). Choose what you want, then close the [Set Active Project Configuration]. .. image:: /images/image63.png #. 네 가지 프로ì 트 ì„¤ì •(Win32 Release_TS, Win32 Release, Win32 Debug_TS and Win32 Debug) 중ì—서 ì›í•˜ëŠ” ì„¤ì •ì„ ì„ íƒí•˜ê³ [OK]를 í´ë¦í•œë‹¤. .. image:: /images/image64.png #. <F7> 키를 눌러 소스코드를 컴파ì¼í•œë‹¤. #. **php_cubrid.dll** 파ì¼ì„ 빌드한 후ì—는 PHPê°€ **php_cubrid.dll** 파ì¼ì„ PHP 확장으로 ì¸ì‹í•˜ë„ë¡ ë‹¤ìŒ ìž‘ì—…ì„ ìˆ˜í–‰í•œë‹¤. * PHP를 설치한 í´ë”ì— **cubrid** í´ë”를 ìƒì„±í•˜ê³ 해당 í´ë”ì— **php_cubrid.dll** 파ì¼ì„ 복사한다. **%PHPRC%\\ext** ë””ë ‰í„°ë¦¬ê°€ 있다면 ì´ ë””ë ‰í„°ë¦¬ì— **php_cubrid.dll** 파ì¼ì„ ë³µì‚¬í•´ë„ ëœë‹¤. * In **php.ini** 파ì¼ì˜ **extension_dir** ë³€ìˆ˜ì˜ ê°’ìœ¼ë¡œ **php_cubrid.dll** 파ì¼ì˜ 경로를 ìž…ë ¥í•˜ê³ , **extension** ë³€ìˆ˜ì˜ ê°’ìœ¼ë¡œ **php_cubrid.dll** ì„ ìž…ë ¥í•œë‹¤. **Windows x64 CUBRID PHP 드ë¼ì´ë²„ 빌드** **x64 PHP** * PHP 5.6.x ë°”ì´ë„ˆë¦¬ : VC11 x64 Non Thread Safe ë˜ëŠ” VC11 x64 Thread Safe를 ì„¤ì¹˜í• ìˆ˜ 있다. 시스템 환경 변수 **%PHPRC%** ê°€ ì œëŒ€ë¡œ ì •ì˜ë˜ì–´ 있어야 한다. [Property Pages] 대화 ìƒìžì˜ [Linker] ì—서 [General]ì„ ì„ íƒí•œë‹¤. [Additional Library Directories]ì—서 **$(PHPRC)** 를 ë³¼ 수 있다. .. image:: /images/image57.jpg * PHP 5.6.x 소스 코드 : ë°”ì´ë„ˆë¦¬ ë²„ì „ê³¼ ì¼ì¹˜í•˜ëŠ” 소스 코드를 ê°€ì ¸ì™€ì•¼ 한다. PHP 5.6.x 소스 코드를 ì••ì¶• í•´ì œí•œ 후 시스템 환경 변수 **%PHPRC%** 를 ì¶”ê°€í•˜ê³ í•´ë‹¹ ê°’ì— PHP 5.6.x 소스 ì½”ë“œì˜ ê²½ë¡œë¡œ ì„¤ì •í•´ì•¼ 한다. [Property Pages] 대화 ìƒìžì˜ [C/C++] ì—서 [General]ì„ ì„ íƒí•œë‹¤. [Additional Library Directories]ì—서 **$(PHP5_SRC)** 를 ë³¼ 수 있다.. .. image:: /images/image58.jpg * PHP 7.1.x ë°”ì´ë„ˆë¦¬ : VC14 x64 Non Thread Safe ë˜ëŠ” VC14 x64 Thread Safe를 ì„¤ì¹˜í• ìˆ˜ 있다. 시스템 환경 변수 **%PHPRC%** ê°€ 올바르게 ì„¤ì •ë˜ì–´ 있는지 확ì¸í•´ì•¼ 한다. [Property Pages] 대화 ìƒìžì˜ [Linker] ì—서 [General]ì„ ì„ íƒí•œë‹¤. [Additional Library Directories]ì—서 **$(PHPRC)** 를 ë³¼ 수 있다. .. image:: /images/image57.jpg * PHP 7.1.x 소스 코드 : ë°”ì´ë„ˆë¦¬ ë²„ì „ê³¼ ì¼ì¹˜í•˜ëŠ” 소스 코드를 ê°€ì ¸ì™€ì•¼ 한다. PHP 7.1.x 소스 코드를 ì••ì¶•ì„ í•´ì œí•œ 후 시스템 환경 ë³€ìˆ˜ì— **%PHP7_SRC%** 를 ì¶”ê°€í•˜ê³ í•´ë‹¹ ê°’ì— PHP 7.1.x 소스 ì½”ë“œì˜ ê²½ë¡œë¡œ ì„¤ì •í•´ì•¼ 한다. [Property Pages] 대화 ìƒìžì˜ [C/C++] ì—서 [General]ì„ ì„ íƒí•œë‹¤. [Additional Library Directories]ì—서 **$(PHP7_SRC)** 를 ë³¼ 수 있다. Windowsì—서 PHP 빌드를 ì§€ì›í•˜ëŠ” 컴파ì¼ëŸ¬ 목ë¡ì€ https://wiki.php.net/internals/windows/compiler ì—서 ì œê³µí•˜ë©°, x64 PHP를 ë¹Œë“œí• ë•Œì—는 Visual C++ 8(2005)와 Visual C++ 9(2008 SP1 only)ì„ ì‚¬ìš©í• ìˆ˜ 있다는 ê²ƒì„ í™•ì¸í• 수 있다. Visual C++ 2005 미만 ë²„ì „ì—서 x64 PHP를 ë¹Œë“œí•˜ë ¤ë©´ Windows Server Feb. 2003 SDK를 사용해야 한다. .. image:: /images/image58.jpg * https://wiki.php.net/internals/windows/compilerì—는 Windowsìš© PHP 빌드를 ì§€ì›í•˜ëŠ” 컴파ì¼ëŸ¬ë¥¼ ì°¾ì„ ìˆ˜ 있다. Visual C++ 11 (2012)ê³¼ Visual C++ 14 (2015)를 ëª¨ë‘ ì‚¬ìš©í•˜ì—¬ 64bit PHP를 빌드 í• ìˆ˜ 있ìŒì„ 알 수 있다. **x64 Apache** * Apache Lounge는 64bit ë²„ì „ì„ í¬í•¨í•œ ìµœì‹ Windows ë°”ì´ë„ˆë¦¬ë¥¼ ì œê³µí•œë‹¤. ë‹¤ìŒ ë§í¬ì—서 ìµœì‹ Apache 2.2.34 64bit ë²„ì „ì„ ë‹¤ìš´ë¡œë“œ í• ìˆ˜ 있다. https://www.apachelounge.com/download/win64/binaries/httpd-2.2.34-win64.zip **환경 ì„¤ì •** * CUBRID x64 ë²„ì „: CUBRID x64ì˜ ìµœì‹ ë²„ì „ì„ ì„¤ì¹˜í•œë‹¤.ì‹œìŠ¤í…œì— í™˜ê²½ 변수 **%CUBRID%** ê°€ ì •ì˜ë˜ì–´ 있는지 확ì¸í•œë‹¤. * Visual Studio 2012 or 2015: makefileì„ ìž˜ 다룰 수 있는 사용ìžë¼ë©´, Visual Studio 2008 ëŒ€ì‹ ì— ë¬´ë£Œì¸ Visual C++ Express Editionì´ë‚˜ Windows SDK v6.1ì— í¬í•¨ëœ VC++ 9 컴파ì¼ëŸ¬ë¥¼ ì‚¬ìš©í• ìˆ˜ 있다. Windowsì—서 CUBRID PHP VC9 드ë¼ì´ë²„를 ì‚¬ìš©í•˜ë ¤ë©´ Visual C++ 2008 Redistributable Packageê°€ 설치ë˜ì–´ 있어야 한다. * 64-bit Windows ìš© PHP 5.6.x ë˜ëŠ” 7.1.x ë°”ì´ë„ˆë¦¬ : VC11 ë˜ëŠ” VC14 x64 ì´ìš©í•˜ì—¬ PHP를 빌드 í• ìˆ˜ 있다. x64 Non Thread Safe와 x64 Thread Safe를 ëª¨ë‘ ì‚¬ìš©í• ìˆ˜ 있다. 설치 한 후 시스템 환경 변수 **%PHPRC%** ì˜ ê°’ì´ ì˜¬ë°”ë¥´ê²Œ ì„¤ì •ë˜ì–´ 있는지 í™•ì¸ í•œë‹¤. * PHP 5.6.x 소스: ë°”ì´ë„ˆë¦¬ ë²„ì „ì— ë§žëŠ” 소스코드를 소스코드를 다운로드해야 한다. PHP 5.6.x 소스를 ì••ì¶• í•´ì œí•œ 후 시스템 환경 ë³€ìˆ˜ì— **%PHP5_SRC%** 를 ì¶”ê°€í•˜ê³ í•´ë‹¹ ê°’ì— PHP 5.6.x 소스 ì½”ë“œì˜ ê²½ë¡œë¡œ ì„¤ì •í•´ì•¼ 한다. VC11 [Property Pages] 대화 ìƒìžì˜ [C/C++] ì—서 [General]ì„ ì„ íƒí•œë‹¤. [Additional Include Directories]ì—서 **$(PHP5_SRC)** 를 ë³¼ 수 있다. * PHP 7.1.x 소스코드: ë°”ì´ë„ˆë¦¬ ë²„ì „ì— ë§žëŠ” 소스코드를 다운로드해야 한다. PHP 7.1.x 소스코드를 다운로드한 후 ì••ì¶• í•´ì œí•˜ê³ , 시스템 환경 변수 **%PHP7_SRC%** 를 추가하여 PHP 7.1.x ì†ŒìŠ¤ì½”ë“œì˜ ê²½ë¡œë¥¼ 값으로 ì„¤ì •í•œë‹¤. VC14 프로ì 트 ì†ì„±ì—서 [C/C++] > [General]ì„ ì„ íƒí•˜ë©´ [Additional Library Directories]ì—서 **$(PHP7_SRC)** ê°€ 사용ë˜ëŠ” ê²ƒì„ ë³¼ 수 있다. * CUBRID PHP 드ë¼ì´ë²„ 소스코드: https://www.cubrid.org/downloads#php ì—서 CUBRID ë²„ì „ì— ë§žëŠ” CUBRID PHP 드ë¼ì´ë²„ì˜ ì†ŒìŠ¤ì½”ë“œë¥¼ 다운로드한다. .. note:: PHP 7.1.xì„ ì†ŒìŠ¤ì½”ë“œì—서 ë¹Œë“œí• í•„ìš”ëŠ” 없지만 PHP 7.1.x 프로ì 트를 ì„¤ì •í•´ì•¼ 한다.PHP 7.1.x 프로ì 트를 ì„¤ì •í•˜ì§€ 않으면 VC14ì—서 config.w32.h í—¤ë” íŒŒì¼ì„ ì°¾ì„ ìˆ˜ 없다는 메시지가 ì¶œë ¥ëœë‹¤. ì„¤ì • ë°©ë²•ì€ ë‹¤ìŒ ì£¼ì†Œë¥¼ ì°¸ê³ í•œë‹¤. https://wiki.php.net/internals/windows/stepbystepbuild **PHP 5.6.x ë˜ëŠ” 7.1.x ì„¤ì •** #. SDK 6.1 ë˜ëŠ” 8.1 ì´ìƒì„ 설치한 후ì—는 Windows [시작] 메뉴ì—서 [Microsoft Windows SDK v.x] > [CMD Shell]ì„ ì„ íƒí•˜ì—¬ ëª…ë ¹ ì…¸ì„ ì‹œìž‘í•œë‹¤. .. image:: /images/image65.png #. **setenv /x64 /release** ì„ ì‹¤í–‰í•œë‹¤. .. image:: /images/image66.png #. PHP 5.3 소스코드 ë””ë ‰í„°ë¦¬ë¡œ ì´ë™í•œ 후 **buildconf** ì„ ì‹¤í–‰í•˜ì—¬ **configure.js** 파ì¼ì„ ìƒì„±í•œë‹¤. .. image:: /images/image67.png ë˜ëŠ” PHP 5.3 소스코드ì—서 **buildconf.bat** 파ì¼ì„ ì‹¤í–‰í•´ë„ ê°™ì€ ë™ìž‘ì„ ìˆ˜í–‰í•œë‹¤. .. image:: /images/image68.png #. PHP 프로ì 트를 ì„¤ì •í•˜ê¸° 위해서 **configure** 를 실행한다. .. image:: /images/image69.png .. image:: /images/image70.png **CUBRID PHP 드ë¼ì´ë²„ 빌드** #. 다운로드한 CUBRID PHP 드ë¼ì´ë²„ ì†ŒìŠ¤ì½”ë“œì˜ **\\win** ë””ë ‰í„°ë¦¬ì— ìžˆëŠ” **php_cubrid.vcproj** 파ì¼ì„ ì—´ê³ , ì™¼ìª½ì˜ [Solution Explorer] ì°½ì—서 **php_cubrid** 를 마우스 오른쪽 버튼으로 í´ë¦í•˜ì—¬ [Properties]를 ì„ íƒí•œë‹¤. #. [Property Page] 대화 ìƒìžì—서 [Configuration Manager]ì„ í´ë¦í•œë‹¤. .. image:: /images/image71.png #. [Configuration Manager] 대화 ìƒìžì˜ [Active solution configuration]ì—는 네 가지 ì„¤ì •(Release_TS, Release_NTS, Debug_TS and Debug_NTS)ë§Œ ë³´ì¸ë‹¤. x64 CUBRID PHP 드ë¼ì´ë²„를 ë¹Œë“œí•˜ë ¤ë©´ 새로운 ì„¤ì •ì„ ìƒì„±í•´ì•¼ 하므로 **New** 를 ì„ íƒí•œë‹¤. .. image:: /images/image72.png #. [New Solution Configuration] 대화ìƒìžì—서 새로운 ì„¤ì •ì˜ ì´ë¦„(예: Release_TS_x64)ì„ ìž…ë ¥í•˜ê³ [Copy settings from]ì—서 ì‚¬ìš©í• PHP와 ê°™ì€ ì„¤ì •ì„ ì„ íƒí•œë‹¤. 여기ì—서는 **Release_TS** 를 ì„ íƒí–ˆë‹¤. ì„ íƒí•œ í›„ì— [OK]를 í´ë¦í•œë‹¤. .. image:: /images/image73.png #. [Configuration Manager] 대화 ìƒìžì—서 해당 프로ì íŠ¸ì˜ [Platform] í•ëª©ì„ ì—´ì–´ì„œ **x64** ê°€ 있다면 **x64** 를 ì„ íƒí•˜ê³ , 없으면 **New** 를 ì„ íƒí•œë‹¤. .. image:: /images/image74.png **New** 를 ì„ íƒí•˜ë©´ [New Project Platform] 대화 ìƒìžê°€ 나타난다. **x64** 를 ì„ íƒí•˜ê³ [OK]를 í´ë¦í•œë‹¤. .. image:: /images/image75.png #. [php_cubrid Property Pages] 대화 ìƒìžì—서 [C/C++] > [Preprocessor]를 ì„ íƒí•˜ê³ , [Preprocessor Definitions]ì—서 **_USE_32BIT_TIME_T** 를 ì‚ì œí•œ 후 [OK]를 í´ë¦í•œë‹¤. .. image:: /images/image76.png #. <F7> 키를 눌러 소스코드를 컴파ì¼í•˜ë©´ x64 PHP 드ë¼ì´ë²„ 파ì¼ì´ ìƒì„±ëœë‹¤. PHP í”„ë¡œê·¸ëž˜ë° ============== ë°ì´í„°ë² ì´ìФ ì—°ê²° ----------------- ë°ì´í„°ë² ì´ìФ ì‘ìš©ì—서 첫 단계는 `cubrid_connect <https://www.php.net/manual/en/function.cubrid-connect.php>`_ () 함수 ë˜ëŠ” `cubrid_connect_with_url <https://www.php.net/manual/en/function.cubrid-connect-with-url.php>`_ () 함수를 사용하는 것으로 ë°ì´í„°ë² ì´ìФ ì—°ê²°ì„ ì œê³µí•œë‹¤. `cubrid_connect <https://www.php.net/manual/en/function.cubrid-connect.php>`_ 함수 ë˜ëŠ” `cubrid_connect_with_url <https://www.php.net/manual/en/function.cubrid-connect-with-url.php>`_ () 함수가 성공ì 으로 수행ë˜ë©´, ë°ì´í„°ë² ì´ìŠ¤ë¥¼ ì‚¬ìš©í• ìˆ˜ 있는 ëª¨ë“ í•¨ìˆ˜ë¥¼ ì‚¬ìš©í• ìˆ˜ 있다. ì‘ìš©ì„ ì™„ì „ížˆ ë내기 ì „ì— `cubrid_disconnect <https://www.php.net/manual/en/function.cubrid-disconnect.php>`_ () 함수를 호출하는 ê²ƒì€ ë§¤ìš° 중요하다. `cubrid_disconnect <https://www.php.net/manual/en/function.cubrid-disconnect.php>`_ () 함수는 현재 ë°œìƒí•œ 트랜ìžì…˜ì„ ëë§ˆì¹˜ê³ `cubrid_connect <https://www.php.net/manual/en/function.cubrid-connect.php>`_ () í•¨ìˆ˜ì— ì˜í•´ ìƒì„±ëœ ì—°ê²° 핸들과 ëª¨ë“ ìš”ì² í•¸ë“¤ì„ ì¢…ë£Œí•œë‹¤. .. note:: * ìŠ¤ë ˆë“œ 기반 프로그램ì—서 ë°ì´í„°ë² ì´ìФ ì—°ê²°ì€ ê° ìŠ¤ë ˆë“œë§ˆë‹¤ ë…립ì 으로 사용해야 한다. * ìžë™ 커밋 모드ì—서 SELECT 문 수행 ì´í›„ ëª¨ë“ ê²°ê³¼ ì…‹ì´ fetchë˜ì§€ 않으면 ì»¤ë°‹ì´ ë˜ì§€ 않는다. ë”°ë¼ì„œ, ìžë™ 커밋 ëª¨ë“œë¼ í•˜ë”ë¼ë„ 프로그램 ë‚´ì—서 ê²°ê³¼ ì…‹ì— ëŒ€í•œ fetch ë„중 ì–´ë– í•œ 오류가 ë°œìƒí•œë‹¤ë©´ 반드시 커밋 ë˜ëŠ” ë¡¤ë°±ì„ ìˆ˜í–‰í•˜ì—¬ 트랜ìžì…˜ì„ 종료 처리하ë„ë¡ í•œë‹¤. 트랜ìžì…˜ê³¼ ìžë™ 커밋 -------------------- CUBRID PHP는 트랜ìžì…˜ê³¼ ìžë™ 커밋 모드를 ì§€ì›í•œë‹¤. ìžë™ 커밋 모드ì—서는 í•˜ë‚˜ì˜ ì§ˆì˜ë§ˆë‹¤ í•˜ë‚˜ì˜ íŠ¸ëžœìžì…˜ì´ ì´ë£¨ì–´ì§„다. `cubrid_get_autocommit <https://www.php.net/manual/en/function.cubrid-get-autocommit.php>`_ () 함수를 사용하면 현재 ì—°ê²°ì˜ ìžë™ 커밋 모드 여부를 확ì¸í• 수 있다. `cubrid_set_autocommit <https://www.php.net/manual/en/function.cubrid-set-autocommit.php>`_ () 함수를 사용하면 현재 ì—°ê²°ì˜ ìžë™ 커밋 모드 여부를 ì„¤ì •í• ìˆ˜ 있으며, ì§„í–‰ 중ì´ë˜ 트랜ìžì…˜ì€ 모드 ì„¤ì •ê³¼ ìƒê´€ì—†ì´ 커밋ëœë‹¤. ì‘ìš© 프로그램 시작 시 ìžë™ 커밋 ëª¨ë“œì˜ ê¸°ë³¸ê°’ì€ ë¸Œë¡œì»¤ 파ë¼ë¯¸í„°ì¸ **CCI_DEFAULT_AUTOCOMMIT** 으로 ì„¤ì •í•œë‹¤. 브로커 파ë¼ë¯¸í„° ì„¤ì •ì„ ìƒëžµí•˜ë©´ ê¸°ë³¸ê°’ì€ **ON** ì´ë‹¤. `cubrid_set_autocommit <https://www.php.net/manual/en/function.cubrid-set-autocommit.php>`_ () 함수ì—서 ìžë™ 커밋 모드를 OFF로 ì„¤ì •í•˜ë©´ 커밋 ë˜ëŠ” ë¡¤ë°±ì„ ëª…ì‹œí•˜ì—¬ 트랜ìžì…˜ì„ ì²˜ë¦¬í• ìˆ˜ 있다. 트랜ìžì…˜ì„ ì»¤ë°‹í•˜ë ¤ë©´ `cubrid_commit <https://www.php.net/manual/en/function.cubrid-commit.php>`_ () 함수를 ì‚¬ìš©í•˜ê³ íŠ¸ëžœìžì…˜ì„ ë¡¤ë°±í•˜ë ¤ë©´ `cubrid_rollback <https://www.php.net/manual/en/function.cubrid-rollback.php>`_ () 함수를 사용한다. `cubrid_disconnect <https://www.php.net/manual/en/function.cubrid-disconnect.php>`_ () 함수는 트랜ìžì…˜ì„ ì¢…ë£Œí•˜ê³ ì»¤ë°‹ë˜ì§€ ì•Šì€ ìž‘ì—…ì„ ë¡¤ë°±í•œë‹¤. ì§ˆì˜ ì²˜ë¦¬ --------- **ì§ˆì˜ ì‹¤í–‰** 다ìŒì€ ì§ˆì˜ ì‹¤í–‰ì„ ìœ„í•œ 기본 단계ì´ë‹¤. * ì—°ê²° 핸들 ìƒì„± * SQL ì§ˆì˜ ìš”ì²ì— 대한 ìš”ì² í•¸ë“¤ ìƒì„± * ê²°ê³¼ ê°€ì ¸ì˜¤ê¸° * ìš”ì² í•¸ë“¤ 종료 .. code-block:: php $con = cubrid_connect("192.168.0.10", 33000, "demodb"); if($con) { $req = cubrid_execute($con, "select * from code"); if($req) { while ($row = cubrid_fetch($req)) { echo $row["s_name"]; echo $row["f_name"]; } cubrid_close_request($req); } cubrid_disconnect($con); } **ì§ˆì˜ ê²°ê³¼ì˜ ì—´ 타입과 ì´ë¦„** `cubrid_column_types <https://www.php.net/manual/en/function.cubrid-column-types.php>`_ () 함수를 사용하여 ì—´ íƒ€ìž…ì´ ë“¤ì–´ìžˆëŠ” ë°°ì—´ì„ ì–»ì„ ìˆ˜ ìžˆê³ , `cubrid_column_types <https://www.php.net/manual/en/function.cubrid-column-types.php>`_ () 함수를 사용하여 ì—´ì˜ ì´ë¦„ì´ ë“¤ì–´ìžˆëŠ” ë°°ì—´ì„ ì–»ì„ ìˆ˜ 있다. .. code-block:: php $req = cubrid_execute($con, "select host_year, host_city from olympic"); if($req) { $col_types = cubrid_column_types($req); $col_names = cubrid_column_names($req); while (list($key, $col_type) = each($col_types)) { echo $col_type; } while (list($key, $col_name) = each($col_names)) echo $col_name; } cubrid_close_request($req); } **커서 ì¡°ì •** ì§ˆì˜ ê²°ê³¼ì˜ ìœ„ì¹˜ë¥¼ ì„¤ì •í• ìˆ˜ 있다. `cubrid_move_cursor <https://www.php.net/manual/en/function.cubrid-move-cursor.php>`_ () 함수를 사용하여 커서를 세 가지 í¬ì¸íЏ(ì§ˆì˜ ê²°ê³¼ì˜ ì²˜ìŒ, 현재 커서 위치, ì§ˆì˜ ê²°ê³¼ì˜ ë) 중 한 í¬ì¸íŠ¸ë¡œë¶€í„° ì¼ì •한 위치로 ì´ë™í• 수 있다. .. code-block:: php $req = cubrid_execute($con, "select host_year, host_city from olympic order by host_year"); if($req) { cubrid_move_cursor($req, 20, CUBRID_CURSOR_CURRENT) while ($row = cubrid_fetch($req, CUBRID_ASSOC)) { echo $row["host_year"]." "; echo $row["host_city"]."\n"; } } **ê²°ê³¼ ë°°ì—´ 타입** `cubrid_fetch <https://www.php.net/manual/en/function.cubrid-fetch.php>`_ () í•¨ìˆ˜ì˜ ê²°ê³¼ì—는 세가지 ì¢…ë¥˜ì˜ ë°°ì—´ 타입 중 하나가 사용ëœë‹¤. `cubrid_fetch <https://www.php.net/manual/en/function.cubrid-fetch.php>`_ () 함수가 호출ë 때 ë°°ì—´ì˜ íƒ€ìž…ì„ ê²°ì •í• ìˆ˜ 있다. ê·¸ 중 í•˜ë‚˜ì¸ ì—°ê´€ë°°ì—´ì€ ë¬¸ìžì—´ 색ì¸ì„ 사용한다. ë‘ ë²ˆì§¸ë¡œ ìˆ˜ì¹˜ë°°ì—´ì€ ìˆ«ìž ìˆœì„œ 색ì¸ì„ 사용한다. 마지막 ë°°ì—´ì€ ì—°ê´€ë°°ì—´ê³¼ ìˆ˜ì¹˜ë°°ì—´ì„ ë‘˜ 다 í¬í•¨í•œë‹¤. * 수치배열 .. code-block:: php while (list($id, $name) = cubrid_fetch($req, CUBRID_NUM)) { echo $id; echo $name; } * 연관배열 .. code-block:: php while ($row = cubrid_fetch($req, CUBRID_ASSOC)) { echo $row["id"]; echo $row["name"]; } **카탈로그 ì—°ì‚°** í´ëž˜ìФ, ê°€ìƒ í´ëž˜ìФ, ì†ì„±, 메서드, 트리거, ì œì•½ ì¡°ê±´ 등 ë°ì´í„°ë² ì´ìŠ¤ì˜ ìŠ¤í‚¤ë§ˆ ì •ë³´ëŠ” `cubrid_schema <https://www.php.net/manual/en/function.cubrid-schema.php>`_ () 함수를 호출하여 ì–»ì„ ìˆ˜ 있다. `cubrid_schema <https://www.php.net/manual/en/function.cubrid-schema.php>`_ () í•¨ìˆ˜ì˜ ë¦¬í„´ ê°’ì€ 2ì°¨ì› ë°°ì—´ì´ë‹¤. .. code-block:: php $pk = cubrid_schema($con, CUBRID_SCH_PRIMARY_KEY, "game"); if ($pk) { print_r($pk); } $fk = cubrid_schema($con, CUBRID_SCH_IMPORTED_KEYS, "game"); if ($fk) { print_r($fk); } **ì—러 처리** ì—러가 ë°œìƒí•˜ë©´ ëŒ€ë¶€ë¶„ì˜ PHP ì¸í„°íŽ˜ì´ìФ 함수는 ì—러 메시지를 ì¶œë ¥í•˜ê³ false나 -1ì„ ë°˜í™˜í•œë‹¤. `cubrid_error_msg <https://www.php.net/manual/en/function.cubrid-error-msg.php>`_ (), `cubrid_error_code <https://www.php.net/manual/en/function.cubrid-error-code.php>`_ () ê·¸ë¦¬ê³ `cubrid_error_code_facility <https://www.php.net/manual/en/function.cubrid-error-code-facility.php>`_ () 함수를 사용하면 ê°ê° ì—러 메시지, ì—러 코드, ì—러 기능 코드를 확ì¸í• 수 있다. `cubrid_error_code_facility <https://www.php.net/manual/en/function.cubrid-error-code-facility.php>`_ () í•¨ìˆ˜ì˜ ê²°ê³¼ ê°’ì€ **CUBRID_FACILITY_DBMS** (DBMS ì—러), **CUBRID_FACILITY_CAS** (CAS 서버 ì—러), **CUBRID_FACILITY_CCI** (CCI ì—러), **CUBRID_FACILITY_CLIENT** (PHP 모듈 ì—러) 중 하나ì´ë‹¤. **OID 사용** `cubrid_execute <https://www.php.net/manual/en/function.cubrid-execute.php>`_ () 함수ì—서 CUBRID_INCLUDE_OID ì˜µì…˜ì„ ì—…ë°ì´íŠ¸í• ìˆ˜ 있는 질ì˜ë¥¼ 함께 사용하면 `cubrid_current_oid <https://www.php.net/manual/en/function.cubrid-current-oid.php>`_ 함수를 통해 ì—…ë°ì´íŠ¸ëœ í˜„ìž¬ f ë ˆì½”ë“œì˜ OID ê°’ì„ ê°€ì ¸ì˜¬ 수 있다. .. code-block:: php $req = cubrid_execute($con, "select * from person where id = 1", CUBRID_INCLUDE_OID); if ($req) { while ($row = cubrid_fetch($req)) { echo cubrid_current_oid($req); echo $row["id"]; echo $row["name"]; } cubrid_close_request($req); } OID를 사용하여 ì¸ìŠ¤í„´ìŠ¤ì˜ ëª¨ë“ ì†ì„±, ì§€ì •í•œ ì†ì„± ë˜ëŠ” 한 ì†ì„±ì˜ ê°’ì„ ì–»ì„ ìˆ˜ 있다. 만약 `cubrid_get <https://www.php.net/manual/en/function.cubrid-get.php>`_ () í•¨ìˆ˜ì— ì†ì„±ì„ 명시하지 않으면 ëª¨ë“ ì†ì„±ì˜ ê°’ì„ ë°˜í™˜í•œë‹¤(a). 만약 ë°°ì—´ ë°ì´í„° 타입으로 ì†ì„±ì„ 명시하면 ì§€ì •í•œ ì†ì„± ê°’ì´ ë“¤ì–´ìžˆëŠ” ë°°ì—´ì€ ì—°ê´€ë°°ì—´ë¡œ 반환ëœë‹¤(b). 만약 문ìžì—´ 타입으로 한 ì†ì„±ì„ 명시하면 ì†ì„±ì˜ ê°’ì´ ë°˜í™˜ëœë‹¤(c). .. code-block:: php $attrarray = cubrid_get ($con, $oid); // (a) $attrarray = cubrid_get ($con, $oid, array("id", "name")); // (b) $attrarray = cubrid_get ($con, $oid, "id"); // (c) OID를 사용하여 ì¸ìŠ¤í„´ìŠ¤ì˜ ì†ì„± ê°’ì„ ê°±ì‹ í• ìˆ˜ë„ ìžˆë‹¤. í•˜ë‚˜ì˜ ì†ì„±ì˜ ê°’ì„ ê°±ì‹ í•˜ë ¤ë©´ ì†ì„± ì´ë¦„ì„ ë¬¸ìžì—´ 타입으로 ëª…ì‹œí•˜ê³ ê°’ì„ ëª…ì‹œí•œë‹¤(a). 다중 ì†ì„±ì˜ ê°’ì„ ì„¤ì •í•˜ë ¤ë©´ ì†ì„± 명과 ê°’ì„ ì—°ê´€ë°°ì—´ë¡œ 명시해야 한다(b). .. code-block:: php $cubrid_put ($con, $oid, "id", 1); // (a) $cubrid_put ($con, $oid, array("id"=>1, "name"=>"Tomas")); // (b) **ì»¬ë ‰ì…˜ 사용** ì»¬ë ‰ì…˜ ë°ì´í„° íƒ€ìž…ì€ PHP ë°°ì—´ ë°ì´í„° íƒ€ìž…ì„ í†µí•´ ì‚¬ìš©í• ìˆ˜ ìžˆê³ ë°°ì—´ ë°ì´í„° íƒ€ìž…ì„ ì§€ì›í•˜ëŠ” PHP 함수를 ì‚¬ìš©í• ìˆ˜ 있다. 다ìŒì€ `cubrid_fetch <https://www.php.net/manual/en/function.cubrid-fetch.php>`_ () 함수를 사용하여 ì§ˆì˜ ê²°ê³¼ë¥¼ ê°€ì ¸ì˜¤ëŠ” ì˜ˆì œì´ë‹¤. .. code-block:: php $row = cubrid_fetch ($req); $col = $row["customer"]; while (list ($key, $cust) = each ($col)) { echo $cust; } ì»¬ë ‰ì…˜ ì†ì„±ì˜ ê°’ë„ ì–»ì„ ìˆ˜ 있다. 다ìŒì€ `cubrid_col_get <https://www.php.net/manual/en/function.cubrid-col-get.php>`_ () 함수를 사용하여 ì»¬ë ‰ì…˜ ì†ì„± ê°’ì„ ê°€ì ¸ì˜¤ëŠ” ì˜ˆì œì´ë‹¤. .. code-block:: php $tels = cubrid_col_get ($con, $oid, "tels"); while (list ($key, $tel) = each ($tels)) { echo $tel."\n"; } cubrid_set_add() 함수와 cubrid_set_drop() 함수를 사용하면 ì»¬ë ‰ì…˜ íƒ€ìž…ì˜ ê°’ì„ ì§ì ‘ì 으로 ê°±ì‹ í• ìˆ˜ 있다. .. code-block:: php $tels = cubrid_col_get ($con, $oid, "tels"); while (list ($key, $tel) = each ($tels)) { $res = cubrid_set_drop ($con, $oid, "tel", $tel); } cubrid_commit ($con); .. note:: 칼럼ì—서 ì •ì˜í•œ í¬ê¸°ë³´ë‹¤ í° ë¬¸ìžì—´ì„ **INSERT** / **UPDATE** 하면 문ìžì—´ì´ ìž˜ë ¤ì„œ ìž…ë ¥ëœë‹¤. PHP API ======= http://ftp.cubrid.org/CUBRID_Docs/Drivers/\를 ì°¸ê³ í•œë‹¤.