|
|
[ÀϹÝ] Linux ¹× Windows ȯ°æÀ» À§ÇÑ PHP, Oracle 10g Instant Client ¼³Ä¡ |
|
È£¼® ´Ô²²¼ ¾´ ±ÛÀÔ´Ï´Ù - 119.¢½.25.138 |
ÀÐÀ½:1647 |
|
|
Linux ¹× Windows ȯ°æÀ» À§ÇÑ PHP, Oracle 10g Instant Client ¼³Ä¡
PHP 5.1.2 ¾÷µ¥ÀÌÆ®
ÀúÀÚ: Christopher Jones, Consulting Technical Staff, Oracle Corporation
¾÷µ¥ÀÌÆ®ÀÏ: 2006³â 1¿ù
Oracle 10g Instant Client (¹«·á·Î ´Ù¿î·Îµå°¡ °¡´ÉÇÕ´Ï´Ù)´Â PHP¸¦ ¿ø°Ý ¿À¶óŬ µ¥ÀÌÅͺ£À̽º¿¡ ¿¬°áÇϱâ À§ÇÑ °¡Àå ¼Õ½¬¿î ¹æ¹ýÀ¸·Î, 3 °³ÀÇ ¶óÀ̺귯¸®¸¸ ¼³Ä¡ÇÏ¸é »ç¿ëÀÌ °¡´ÉÇÕ´Ï´Ù.
PHP¿¡¼ Oracle APIÀÇ ¾×¼¼½º¿¡ »ç¿ëµÇ´Â Instant Client ¶óÀ̺귯¸®´Â OCI8À̶ó´Â À̸§À¸·Î ºÒ¸³´Ï´Ù (ÀÌ À̸§Àº Oracle8 ¹öÀü¿¡¼ ÃÖÃÊ·Î °³¹ßµÇ¸é¼ ºÙ¿©Áø °ÍÀÔ´Ï´Ù). PHP Oracle 8 ÇÔ¼ö ¸¦ ÀÌ¿ëÇÏ¿© Oracle 8.1.7, 9.x, 10.x¸¦ Á÷Á¢ È£ÃâÇÒ ¼ö ÀÖ°í, ¶Ç´Â PEAR MDB2¿Í ADOdb µîÀÇ Ãß»óÈ Å¬·¡½º(abstraction class)¸¦ ÇÔ²² ÀÌ¿ëÇÒ ¼öµµ ÀÖ½À´Ï´Ù.
±¸ ¹öÀüÀÇ PHP ¡°oracle¡± ÀͽºÅÙ¼ÇÀ» Instant Client¿¡¼ ÀÌ¿ëÇÏ´Â °Íµµ °¡´ÉÇÏÁö¸¸, ÀÌ °æ¿ì¿¡´Â (¿À¶óŬ¿¡ ÀÇÇØ ´õ ÀÌ»ó Áö¿øµÇÁö ¾Ê´Â) ±¸ ¹öÀüÀÇ Oracle API°¡ »ç¿ëµË´Ï´Ù. ÀÌ·¯ÇÑ ÀÌÀ¯·Î, PHP Ä¿¹Â´ÏƼ¿Í ¿À¶óŬÀº »õ·Î¿î °³¹ßÀÛ¾÷¿¡¼ ÀÌ ÀͽºÅÙ¼ÇÀ» »ç¿ëÇÏ´Â °ÍÀ» ±ÇÀåÇÏÁö ¾Ê°í ÀÖ½À´Ï´Ù.
Apache ȯ°æ¿¡¼ PHP 4 ¶Ç´Â PHP 5¿Í ÇÔ²² Instant Client¸¦ »ç¿ëÇϱâ À§ÇÑ ¹æ¹ýÀÌ ¾Æ·¡¿¡ ¼³¸íµÇ¾î ÀÖ½À´Ï´Ù. (5.1.2¿Í OCI8 ÀͽºÅټǿ¡ °ü·ÃÇÑ »ó¼¼ÇÑ Á¤º¸´Â ÀÌ ¼½¼ÇÀ» Âü°íÇϽñ⠹ٶø´Ï´Ù.) Instant Client¿¡´Â ¿À¶óŬ µ¥ÀÌÅͺ£À̽º°¡ Æ÷ÇԵǾî ÀÖÁö ¾ÊÀ¸¹Ç·Î, º°µµÀÇ µ¥ÀÌÅͺ£À̽º ȯ°æÀÌ ¹Ì¸® ±¸ÃàµÇ¾î ÀÖ¾î¾ß ÇÕ´Ï´Ù.
ÀϹÝÀûÀ¸·Î µ¥ÀÌÅͺ£À̽º´Â ´Ù¸¥ ¸Ó½Å¿¡¼ ¿î¿µµË´Ï´Ù. µ¥ÀÌÅͺ£À̽º°¡ ·ÎÄÿ¡ ¼³Ä¡µÈ °æ¿ì¿¡´Â, ÇÊ¿äÇÑ ¿À¶óŬ ÄÄÆ÷³ÍÆ®°¡ ÀÌ¹Ì »ç¿ë °¡´ÉÇϹǷÎ, Instant Client¸¦ µû·Î ¼³Ä¡ÇÒ ÇÊ¿ä°¡ ¾ø½À´Ï´Ù.
¼ÒÇÁÆ®¿þ¾î ¿ä±¸»çÇ×: ¼ÒÇÁÆ®¿þ¾î Âü°í
Oracle Instant Client "Instant Client Package - Basic"À» ´Ù¿î·ÎµåÇÕ´Ï´Ù. Linux ȯ°æÀÇ °æ¿ì, "Instant Client Package - SDK"¸¦ ÇÔ²² ´Ù¿î·ÎµåÇÕ´Ï´Ù.
Apache HTTPD Server PHP Ä¿¹Â´ÏƼ´Â Apache 1.3À» ±ÇÀåÇÏ°í ÀÖ½À´Ï´Ù.
PHP - PHP Hypertext Processor Version 4.3 ¶Ç´Â ÀÌÈÄ ¹öÀü
Windows ȯ°æ¿¡¼ PHP OCI8 Extension È°¼ºÈÇϱâ
Instant Client ¹ÙÀ̳ʸ®´Â PHP¿¡ Æ÷ÇÔµÈ Windows¿ë ¹ÙÀ̳ʸ®¸¦ º¸¿ÏÇÏ´Â ¿ªÇÒÀ» ´ã´çÇÏ°Ô µË´Ï´Ù.
(installer build°¡ ¾Æ´Ñ) PHP ¹ÙÀ̳ʸ® zip ÆÄÀÏ°ú Apache¸¦ ´Ù¿î·ÎµåÇÕ´Ï´Ù. PHP ¸Å´º¾óÀÇ Windows ½Ã½ºÅÛ ¼³Ä¡ °¡À̵带 Âü°íÇÏ¿© ¼³Ä¡ ÀÛ¾÷À» ¼öÇàÇÕ´Ï´Ù. OTNÀÇ ¿ÀÇ ¼Ò½º °³¹ßÀÚ ¼¾ÅÍ¿¡¼ "Oracle, PHP, and Apache on Windows 2000/XP ȯ°æÀÇ Oracle, PHP, Apache ¼³Ä¡,"¿Í °°Àº À¯¿ëÇÑ ±â¼úÁ¤º¸¸¦ Âü°íÇÏ½Ç ¼ö ÀÖ½À´Ï´Ù. ÀÌ ¹®¼¿¡´Â Oracle 10g¸¦ Àüü ¼³Ä¡ÇÏ´Â ¹æ¹ýÀÌ ¼³¸íµÇ¾î ÀÖ½À´Ï´Ù (Instant Client ¼³Ä¡ ½Ã¿¡´Â ÀÌ ÀÛ¾÷ÀÌ ÇÊ¿äÇÏÁö ¾Ê½À´Ï´Ù).
´ÙÀ½ ´Ü°è·Î ÁøÇàÇϱâ Àü¿¡ PHP°¡ Á¦´ë·Î µ¿ÀÛÇÏ´ÂÁö È®ÀÎÇÕ´Ï´Ù. ÀÌ ´Ü°è¿¡¼´Â ¿À¶óŬ ¿¬µ¿ ±â´ÉÀº Áö¿øµÇÁö ¾Ê½À´Ï´Ù.
OTNÀÇ Instant Client ÆäÀÌÁö¿¡¼ Instant Client Basic package for Windows¸¦ ´Ù¿î·ÎµåÇÕ´Ï´Ù. zip ÆÄÀÏÀÇ »çÀÌÁî´Â ´ë·« 30 MB Á¤µµ µË´Ï´Ù.
¼ºêµð·ºÅ丮(¿¹: c:\instantclient10_1)¸¦ »ý¼ºÇÏ°í zip ÆÄÀϷκÎÅÍ ¾Æ·¡ ¶óÀ̺귯¸®¸¦ º¹»çÇÕ´Ï´Ù:
oraociei10.dll
orannzsbb10.dll
oci.dll
3°³ ÆÄÀÏÀÇ ÃÑ ¿ë·®Àº ¾à 80MB Á¤µµ µË´Ï´Ù.
PHPÀÇ ±¸ ¹öÀü oracle extensionÀ» »ç¿ëÇÏ·Á´Â °æ¿ì, oci.dll ´ë½Å ociw32.dllÀ» º¹»çÇÕ´Ï´Ù (ÀÌ ÀͽºÅÙ¼ÇÀ» È°¼ºÈÇÏ·Á¸é php.ini ÆÄÀÏ¿¡¼ "extension=php_oracle.dll"·Î ¼³Á¤ÇÕ´Ï´Ù.)
PATH ȯ°æº¯¼ö¸¦ ÆíÁýÇÏ¿© ¡°c:\instantclient10_1¡±°¡ ´Ù¸¥ ¿À¶óŬ µð·ºÅ丮ÀÇ ¾Õ¿¡ À§Ä¡ÇÏ°Ô ÇÕ´Ï´Ù.
Windows 2000ÀÇ °æ¿ì, ½ÃÀÛ -> ¼³Á¤ -> Á¦¾îÆÇ -> ½Ã½ºÅÛ -> °í±Þ -> ȯ°æ º¯¼ö·Î À̵¿ÇÏ¿© ½Ã½ºÅÛ º¯¼ö ¸ñ·ÏÀÇ PATH¸¦ ÆíÁýÇÕ´Ï´Ù.
tnsnames.ora ÆÄÀÏÀ» ÀÌ¿ëÇÏ¿© Oracle Net ¼ºñ½º ³×ÀÓÀ» Á¤ÀÇÇÑ °æ¿ì, tnsnames.ora¸¦ c:\instantclient10_1·Î º¹»çÇÏ°í »ç¿ëÀÚ È¯°æº¯¼ö TNS_ADMINÀ» c:\instantclient10_1·Î º¹»çÇÕ´Ï´Ù. µðÆúÆ® ¼ºñ½º ³×ÀÓÀº »ç¿ëÀÚ È¯°æº¯¼ö LOCAL¿¡ Ãß°¡·Î ¼³Á¤ÇÒ ¼ö ÀÖ½À´Ï´Ù.
NLS_LANG°ú °°Àº Oracle globalization language ȯ°æº¯¼ö¸¦ ÇÊ¿ä¿¡ µû¶ó ¼³Á¤ÇÕ´Ï´Ù. ¾Æ¹«°Íµµ ¼³Á¤µÇÁö ¾ÊÀº °æ¿ì, µðÆúÆ® ·ÎÄà ȯ°æÀÌ ±×´ë·Î »ç¿ëµË´Ï´Ù. ÀÚ¼¼ÇÑ Á¤º¸´Â An Overview on Globalizing Oracle PHP Applications ¹®¼¸¦ Âü°íÇϽʽÿÀ.
Unset unnecessary Oracle variables such as ORACLE_HOME and ORACLE_SID.
php.ini¸¦ ÆíÁýÇÏ°í OCI8 ÀͽºÅÙ¼ÇÀÇ Ä¿¸àÆ® ±âÈ£¸¦ »èÁ¦ÇÕ´Ï´Ù:
extension=php_oci8.dll
extension_dir Ç׸ñ¿¡ PHP ÀͽºÅÙ¼Ç DLLÀÇ Àüü °æ·Î¸¦ ¼³Á¤ÇÕ´Ï´Ù. PHP4ÀÇ °æ¿ì DLLÀº PHP ¼ÒÇÁÆ®¿þ¾îÀÇ ¡°extensions¡± ¼ºêµð·ºÅ丮¿¡ À§Ä¡ÇÕ´Ï´Ù. PHP5¿¡¼´Â ¡°ext¡± ¼ºêµð·ºÅ丮¿¡ À§Ä¡ÇÕ´Ï´Ù.
Apache¸¦ Àç½ÃÀÛÇÕ´Ï´Ù.
ÀͽºÅÙ¼ÇÀÌ ¼³Á¤µÇ¾úÀ½À» È®ÀÎÇß´Ù¸é, À¥ ¼¹ö¿¡¼ Á¢±ÙÇÒ ¼ö ÀÖ´Â À§Ä¡¿¡ °£´ÜÇÑ PHP ½ºÅ©¸³Æ®(phpinfo.php)¸¦ »ý¼ºÇÕ´Ï´Ù.
<?php
phpinfo();
?>
"http://" URLÀ» »ç¿ëÇÏ¿© ºê¶ó¿ìÀú¿¡¼ ½ºÅ©¸³Æ®¸¦ ·ÎµåÇÕ´Ï´Ù. ºê¶ó¿ìÀú ÆäÀÌÁöÀÇ "oci8" ¼½¼Ç¿¡¼ "OCI8 Support enabled"¶ó´Â ¹®±¸¸¦ È®ÀÎÇÒ ¼ö ÀÖ¾î¾ß ÇÕ´Ï´Ù.
Linux¿¡¼ PHP OCI8 Extension È°¼ºÈÇϱâ
Linux ȯ°æ¿¡¼ ¿À¶óŬ ¿¬°áÀ» Ãß°¡ÇÏ·Á¸é, ¸ÕÀú PHP¸¦ ´Ù½Ã ÄÄÆÄÀÏÇØ¾ß ÇÕ´Ï´Ù.
OTNÀÇ ¿ÀÇ ¼Ò½º °³¹ßÀÚ ¼¾ÅÍ¿¡¼ " Linux¿¡¼ Oracle, PHP, Apache ¼³Ä¡Çϱâ",¿Í °°Àº À¯¿ëÇÑ ±â¼úÁ¤º¸¸¦ Âü°íÇÏ½Ç ¼ö ÀÖ½À´Ï´Ù. ÀÌ ¹®¼¿¡´Â Oracle 10g¸¦ Àüü ¼³Ä¡ÇÏ´Â ¹æ¹ýÀÌ ¼³¸íµÇ¾î ÀÖ½À´Ï´Ù (Instant Client ¼³Ä¡ ½Ã¿¡´Â ÀÌ ÀÛ¾÷ÀÌ ÇÊ¿äÇÏÁö ¾Ê½À´Ï´Ù.
Apache¸¦ ´Ù¿î·ÎµåÇÏ¿© ¼³Ä¡ÇÕ´Ï´Ù. »ç¿ëÀÚÀÇ È¨ µð·ºÅ丮¿¡ Apache¸¦ ¼³Ä¡ÇÏ´Â ¿¹°¡ ¾Æ·¡¿Í °°½À´Ï´Ù:
cd apache_1.3.31
./configure --enable-module=so --prefix=$HOME/apache --with-port=8888
make
make install
$HOME/apache/conf/httpd.conÀ» ÆíÁýÇÏ¿© ¾Æ·¡ Ç׸ñÀ» Ãß°¡ÇÕ´Ï´Ù:
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
PHP¸¦ ´Ù¿î·ÎµåÇÏ¿© tar ¾ÐÃàÀ» DZ´Ï´Ù.
OTNÀÇ Instant Client ÆäÀÌÁö¿¡¼ Basic/SDK Instant Client Package¸¦ ´Ù¿î·ÎµåÇÕ´Ï´Ù. µÎ RPMÀÇ Àüü Å©±â´Â ¾à 30MB °¡·® µË´Ï´Ù.
root »ç¿ëÀÚ·Î RPMÀ» ¼³Ä¡ÇÕ´Ï´Ù.
rpm -Uvh oracle-instantclient-basic-10.1.0.3-1.i386.rpm
rpm -Uvh oracle-instantclient-devel-10.1.0.3-1.i386.rpm
ù ¹ø° RPMÀº ¿À¶óŬ ¶óÀ̺귯¸®¸¦ /usr/lib/oracle/10.1.0.3/client/lib¿¡ ¼³Ä¡ÇÏ°í, µÎ ¹ø° RPMÀº /usr/include/oracle/10.1.0.3/client¿¡ Çì´õ¸¦ »ý¼ºÇÕ´Ï´Ù.
¹é¾÷ ÈÄ ÀÌ ÆÐÄ¡¸¦ PHPÀÇ ext/oci8/config.m4¿¡ Àû¿ëÇÕ´Ï´Ù. ÆÐÄ¡ ¶óÀÎ ³Ñ¹ö´Â PHP 4.3.9¸¦ ±âÁØÀ¸·Î ÇÏ°í ÀÖ½À´Ï´Ù. (PHP 4.3.11¿Í 5.0.4ÀÇ °æ¿ìó·³) PHP bug 31084°¡ ÇØ°áµÇ¾ú´Ù¸é ÀÌ ÆÐÄ¡¸¦ Àû¿ëÇÒ ÇÊ¿ä´Â ¾ø½À´Ï´Ù.
PHP 4.3.9 ¶Ç´Â 4.3.10À» »ç¿ëÇÏ´Â °æ¿ì¿¡´Â ÀÌ ÆÐÄ¡¸¦ ÆÄÀÏ(¿¹: php_oci8ic_buildpatch)¿¡ ÀúÀåÇÑ ÈÄ ¾Æ·¡¿Í °°ÀÌ ¼³Ä¡ÇÕ´Ï´Ù:
patch -u config.m4 php_oci8ic_buildpatch
À§ ÆÐÄ¡¸¦ ½ÇÇàÇÏ¸é »õ·Î¿î PHP ¼³Á¤ ¸Å°³º¯¼ö --with-oci8-instant-client[=DIR]ÀÌ »ý¼ºµË´Ï´Ù. Linux ¿î¿µÃ¼Á¦´Â ±âº»ÀûÀ¸·Î RPMÀ» ÅëÇØ ¼³Ä¡µÈ Instant ClientÀÇ ÃֽŠ¹öÀüÀ» »ç¿ëÇÕ´Ï´Ù. ¿À¶óŬ ¶óÀ̺귯¸®ÀÇ °æ·Î¸¦ ÁöÁ¤ÇÔÀ¸·Î½á ´Ù¸¥ ¹öÀüÀ» »ç¿ëÇϵµ·Ï ÇÒ ¼öµµ ÀÖ½À´Ï´Ù. ¾î¶² °æ¿ìµç ¹öÀü¿¡ ¸Â´Â SDK Çì´õ°¡ ÀÚµ¿ÀûÀ¸·Î Àû¿ëµË´Ï´Ù.
»õ·Î¿î ¸Å°³º¯¼ö´Â ±âÁ¸ÀÇ --with-oci8 ¸Å°³º¯¼ö¸¦ ´ëüÇÕ´Ï´Ù.
Âü°í: Linux ÀÌ¿ÜÀÇ ¿î¿µÃ¼Á¦¿¡¼´Â, »ç¿ëÀÚ°¡ ¼±ÅÃÇÑ µð·ºÅ丮¿¡ Instant Client ÆÐÅ°ÁöÀÇ ¾ÐÃàÀ» Ç®°Ô µË´Ï´Ù. --with-oci8-instant-client ¸Å°³º¯¼ö¸¦ »ç¿ëÇÏ·Á¸é ÀÌ µð·ºÅ丮¸¦ ¸í½ÃÀûÀ¸·Î ÁöÁ¤ÇØ ÁÖ¾î¾ß ÇÕ´Ï´Ù (¿¹: --with-oci8-instant-client=/home/instantclient10_1) Instant Client SDK´Â Basic Package¿Í °°Àº µð·ºÅ丮¿¡ ¾ÐÃàÀ» Ç®¾î¾ß¸¸, À籸¼ºµÈ configure ½ºÅ©¸³Æ®¿¡¼ Çì´õ ÆÄÀÏÀÇ ¼ºêµð·ºÅ丮¸¦ Á¤È®ÇÏ°Ô Ã£À» ¼ö ÀÖ½À´Ï´Ù.
¡°configure¡± ½ºÅ©¸³Æ®¸¦ ÃÖ»óÀ§ PHP µð·ºÅ丮¿¡¼ rebuild ÇÕ´Ï´Ù.
cd php-4.3.9
rm -rf autom4te.cache config.cache
./buildconf --force
»õ·Î¿î ¿É¼ÇÀ» ÀÌ¿ëÇÏ¿© configure¸¦ ½ÇÇàÇÕ´Ï´Ù. Ȩ µð·ºÅ丮¿¡ Apache¸¦ ¼³Ä¡ÇÑ È¯°æ¿¡¼ÀÇ ½ÇÇà ¿¹°¡ ¾Æ·¡¿Í °°½À´Ï´Ù.
./configure \
--with-oci8-instant-client \
--prefix=$HOME/php --with-apxs=$HOME/apache/bin/apxs \
--enable-sigchild --with-config-file-path=$HOME/apache/conf
PHP¸¦ rebuildÇÕ´Ï´Ù.
make
make install
php.ini ÆÄÀÏÀ» --with-config-file-path¿¡¼ ÁöÁ¤µÈ À§Ä¡¿¡ º¹»çÇÕ´Ï´Ù.
cp php.ini-recommended $HOME/apache/conf/php.ini
LD_LIBRARY_PATH¸¦ /usr/lib/oracle/10.1.0.3/client/libÀ¸·Î ¼³Á¤ÇÏ°í Apache¸¦ Àç½ÃÀÛÇÕ´Ï´Ù.
tnsnames.ora ÆÄÀÏÀ» ÀÌ¿ëÇÏ¿© Oracle Net ¼ºñ½º ³×ÀÓÀ» Á¤ÀÇÇÑ °æ¿ì, TNS_ADMINÀ» ÆÄÀÏÀÌ À§Ä¡ÇÑ µð·ºÅ丮·Î ¼³Á¤ÇØ ÁÝ´Ï´Ù.
Apache¸¦ ½ÃÀÛÇϱâ Àü¿¡ ¸ðµç ¿À¶óŬ ȯ°æ º¯¼ö¸¦ ¼³Á¤ÇØ ÁÖ´Â °ÍÀÌ Áß¿äÇÕ´Ï´Ù. ½ºÅ©¸³Æ®ÀÇ ¿¹°¡ ¾Æ·¡¿Í °°½À´Ï´Ù:
#!/bin/sh
APACHEHOME=/home/apache
LD_LIBRARY_PATH=/usr/lib/oracle/10.1.0.3/client/lib:${LD_LIBRARY_PATH}
TNS_ADMIN=/home
export LD_LIBRARY_PATH TNS_ADMIN
echo Starting Apache
$APACHEHOME/apachectl start
ÀͽºÅÙ¼ÇÀÇ ¼³Á¤À» È®ÀÎÇÑ ÈÄ, À¥ ¼¹ö°¡ Á¢±ÙÇÒ ¼ö ÀÖ´Â À§Ä¡¿¡ °£´ÜÇÑ PHP ½ºÅ©¸³Æ®(phpinfo.php)¸¦ »ý¼ºÇÕ´Ï´Ù.
<?php
phpinfo();
?>
URL("http://localhost:8888/<path>/phpinfo.php¡±)À» »ç¿ëÇÏ¿© ½ºÅ©¸³Æ®¸¦ ºê¶ó¿ìÀú¿¡ ·ÎµåÇÕ´Ï´Ù. ºê¶ó¿ìÀú ÆäÀÌÁöÀÇ "oci8" ¼½¼Ç¿¡¼ "OCI8 Support enabled"¶ó´Â ¹®±¸¸¦ È®ÀÎÇÒ ¼ö ÀÖ¾î¾ß ÇÕ´Ï´Ù.
¿À¶óŬ·ÎÀÇ ¿¬°á
¿À¶óŬ ¿¬°áÀ» »ý¼ºÇÏ·Á¸é ¸ÕÀú ¿À¶óŬ ¿¬°á Á¤º¸¸¦ OCILogon()¿¡ Àü´ÞÇØ ÁÖ¾î¾ß ÇÕ´Ï´Ù. Instant Client¿Í °ü·ÃµÈ ¸ðµç ÅøÀº µ¥ÀÌÅͺ£À̽º ¼¹öÀÇ ¡°¿ø°Ý¡±¿¡ À§Ä¡Çϸç, µû¶ó¼ »ç¿ëÀÚ À̸§, ¾ÏÈ£¿Í ÇÔ²² Oracle Net connection identifier°¡ »ç¿ëµÇ¾î¾ß ÇÕ´Ï´Ù. ±âÁ¸¿¡ ±¸¼ºµÈ ¿À¶óŬ µ¥ÀÌÅͺ£À̽º¿¡ ´ëÇÑ ¿¬°á Á¤º¸´Â ¿ÜºÎ¿¡¼ ¡°well-known¡± Á¤º¸·Î È®ÀÎÀÌ °¡´ÉÇÕ´Ï´Ù. »õ·Î ±¸¼ºµÈ ½Ã½ºÅÛ¿¡¼´Â µ¥ÀÌÅͺ£À̽º ¼Â¾÷ °úÁ¤¿¡¼ ¿À¶óŬ ¼³Ä¡ ÇÁ·Î±×·¥¿¡ ÀÇÇØ ¼³Á¤µË´Ï´Ù. ÀνºÅç·¯´Â Oracle Net ¼³Á¤ ¹× ¼ºñ½º ³×ÀÓ »ý¼º ÀÛ¾÷À» ¼öÇàÇÕ´Ï´Ù.
»õ·Î¿î µ¥ÀÌÅͺ£À̽º¿¡¼ HR¿Í °°Àº »ùÇà ½ºÅ°¸¶¸¦ »ç¿ëÇÏ·Á¸é unlock ÀÛ¾÷À» ¼öÇàÇÏ°í ¾ÏÈ£¸¦ ÀÔ·ÂÇØ¾ß ÇÒ ¼ö ÀÖ½À´Ï´Ù. À̸¦ À§ÇØ SQL*Plus¿¡¼ SYSTEM »ç¿ëÀÚ·Î ¿¬°áÇÑ µÚ ¾Æ·¡¿Í °°ÀÌ ½ÇÇàÇØ ÁÝ´Ï´Ù:
ALTER USER username IDENTIFIED BY new_password ACCOUNT UNLOCK;
¿¬°á Á¤º¸¸¦ PHP¿¡ Àü´ÞÇÏ´Â ¹æ¹ý¿¡´Â ¿©·¯ °¡Áö°¡ ÀÖ½À´Ï´Ù. ¸ÕÀú Oracle 10gÀÇ Easy Connect ½ÅÅýº¸¦ ÀÌ¿ëÇÏ¿© mymachine¿¡¼ ½ÇÇà ÁßÀÎ the MYDB µ¥ÀÌÅͺ£À̽º ¼ºñ½ºÀÇ HR ½ºÅ°¸¶¿¡ ¿¬°áÇÏ´Â ¹æ¹ýÀÌ ¾Æ·¡¿Í °°½À´Ï´Ù. ÀÌ °æ¿ì tnsnames.ora ¶Ç´Â ´Ù¸¥ Oracle Network ÆÄÀÏÀÌ ÇÊ¿äÇÏÁö ¾Ê½À´Ï´Ù:
$c = OCILogon('hr', 'hr_password', '//mymachine.mydomain/MYDB');
Easy Connect ½ÅÅýº °ü·Ã ¿À¶óŬ ¹®¼(Using the Easy Connect Naming Method)¸¦ Âü°íÇϽñ⠹ٶø´Ï´Ù.
¶Ç´Â, /home/tnsnames.ora¿¡ ´ÙÀ½°ú °°Àº ³»¿ëÀÌ Æ÷ÇÔµÈ °æ¿ì:
MYDB =
(DESCRIPTION =
(ADDRESS = (PROTOCOL = TCP)(HOST = mymachine.mydomain)(PORT = 1521))
(CONNECT_DATA =
(SERVER = DEDICATED)
(SERVICE_NAME = MYDB)
)
)
±×¸®°í TNS_ADMIN ȯ°æº¯¼ö°¡ (Apache ½ÃÀÛ ÀÌÀü¿¡) /homeÀ¸·Î ¼³Á¤µÈ °æ¿ì, ¿¬°á ¹®ÀÚ¿À» ¾Æ·¡¿Í °°ÀÌ ¼³Á¤ÇÒ ¼ö ÀÖ½À´Ï´Ù:
$c = OCILogon('hr', 'hr_password', 'MYDB');
ȯ°æº¯¼ö LOCAL(Windows) ¶Ç´Â TWO_TASK(Linux)°¡ MYDB·Î ¼³Á¤µÈ °æ¿ì, MYDB·ÎÀÇ ¿¬°áÀ» À§ÇÑ ¹®ÀÚ¿ÀÌ ´ÙÀ½°ú °°½À´Ï´Ù:
$c = OCILogon('hr', 'hr_password');
OracleÀÇ »ç¿ë
±âº»ÀûÀÎ ¿¬°á¿¡ ¼º°øÇß´Ù¸é, °£´ÜÇÑ ½ºÅ©¸³Æ®(testoci.php)¸¦ Å×½ºÆ®ÇØ º¼ Â÷·ÊÀÔ´Ï´Ù. »ç¿ëÀÚÀÇ µ¥ÀÌÅͺ£À̽º ȯ°æ¿¡ ¸Â°Ô ¿¬°á ¼³Á¤À» ¼öÁ¤ÇÑ ÈÄ ºê¶ó¿ìÀú¿¡¼ ½ºÅ©¸³Æ®¸¦ ·ÎµåÇÕ´Ï´Ù. HR »ç¿ëÀÚ°¡ ¼ÒÀ¯ÇÑ ¸ðµç Å×À̺íÀÇ ¸ñ·ÏÀ» Ç¥½ÃÇÏ´Â ½ºÅ©¸³Æ® ¿¹°¡ ¾Æ·¡¿Í °°½À´Ï´Ù:
<?php
$conn = OCILogon("hr", "hr_password", '//mymachine.mydomain:port/MYDB);
$query = 'select table_name from user_tables';
$stid = OCIParse($conn, $query);
OCIExecute($stid, OCI_DEFAULT);
while ($succ = OCIFetchInto($stid, $row)) {
foreach ($row as $item) {
echo $item." ";
}
echo "<br>\n";
}
OCILogoff($conn);
?>
Æ®·¯ºí½´ÆÃ
Oracle PHP Troubleshooting FAQ¿¡¼ ¿À¶óŬ ¿¬°á¿¡ °ü·ÃÇÑ À¯¿ëÇÑ Á¤º¸¸¦ È®ÀÎÇÏ½Ç ¼ö ÀÖ½À´Ï´Ù.
¿À¶óŬÀÇ SQL*Plus Ä¿¸Çµå¶óÀÎ ÅøÀ» Instant Client ÆäÀÌÁö¿¡¼ ´Ù¿î·ÎµåÇÏ¿© ȯ°æ ¹× ¿¬°á ¹®Á¦¸¦ ÇØ°áÇϴµ¥ ÀÌ¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù. SQL*Plus Instant Client Release Notes¸¦ Âü°íÇϽñ⠹ٶø´Ï´Ù.
SQL*Plus¸¦ ÀÌ¿ëÇÏ¿© ȯ°æÀ» Á¡°ËÇÏ´Â ¹æ¹ýÀº phpino.php ½ºÅ©¸³Æ®ÀÇ ¿¹¿Í µ¿ÀÏÇÕ´Ï´Ù.
Windows µµ¿ò¸»
phpinfo.php ½ºÅ©¸³Æ®¸¦ ½ÇÇàÇßÀ» ¶§ ¡°oci8¡± ¼½¼Ç¿¡¼ "OCI8 Support enabled" ¸Þ½ÃÁö¸¦ È®ÀÎÇÒ ¼ö ¾ø´Ù¸é, php.ini ÆÄÀÏ¿¡¼ "extension=php_oci8.dll" Ç׸ñÀÇ ÁÖ¼® 󸮰¡ ÇØÁ¦µÇ¾ú´ÂÁö Á¡°ËÇÕ´Ï´Ù.
PATH°¡ À߸ø ¼³Á¤µÇ¾î Àְųª ¿À¶óŬ ¶óÀ̺귯¸®¸¦ ãÀ» ¼ö ¾ø´Â °æ¿ì, Apache ½ÃÀÛ ½Ã ´ÙÀ½°ú °°Àº °æ°í ¸Þ½ÃÁö°¡ Ç¥½ÃµË´Ï´Ù: "The dynamic link library OCI.dll could not be found in the specified path." phpinfo() ÆäÀÌÁöÀÇ Environment ¼½¼Ç¿¡¼, PHP¿¡ ÀÇÇØ ½ÇÁ¦·Î »ç¿ëµÇ´Â PATH¿Í Oracle º¯¼öÀÇ °ªÀ» È®ÀÎÇÒ ¼ö ÀÖ½À´Ï´Ù.
php.ini¿¡ extension_dir ¸Å°³º¯¼ö°¡ ¿Ã¹Ù¸£°Ô ¼³Á¤µÇÁö ¾ÊÀº °æ¿ì Apache ½ÃÀÛ ½Ã ´ÙÀ½°ú °°Àº °æ°í ¸Þ½ÃÁö°¡ Ç¥½ÃµË´Ï´Ù: "PHP Startup: Unable to load dynamic library php_oci8.dll."
Linux µµ¿ò¸»
config.m4°¡ ¿Ã¹Ù¸£°Ô ÆÐÄ¡µÇ¾ú´ÂÁö È®ÀÎÇÕ´Ï´Ù. ¡°configure¡±ÀÇ ½ÇÇà¿¡ ½ÇÆÐÇÑ °æ¿ì, config.log ÆÄÀÏÀ» Á¡°ËÇÕ´Ï´Ù. config.m4¸¦ ÀÌÀü »óÅ·ΠµÇµ¹¸®°í ij½Ã ÆÄÀÏÀ» Á¦°ÅÇÑ ÈÄ ¡°./buildconf --force and configure¡±¸¦ ½ÇÇàÇÑ ´ÙÀ½, ¹ß»ýÇÑ ¹®Á¦°¡ ÆÐÄ¡ ÀÛ¾÷°ú °ü·ÃµÈ °ÍÀÎÁö È®ÀÎÇÕ´Ï´Ù.
¡°configure¡±ÀÇ Å¸ÀÓ½ºÅÆÇÁ°¡ ÇöÀç ½ÃÁ¡À¸·Î ¼³Á¤µÇ¾î ÀÖ´ÂÁö È®ÀÎÇÕ´Ï´Ù. ij½Ã ÆÄÀÏÀ» ¸ðµÎ Á¦°ÅÇÏ°í ÇÊ¿äÇÑ °æ¿ì rebuild ÀÛ¾÷À» ¼öÇàÇÕ´Ï´Ù.
Apache¸¦ ½ÃÀÛÇÏ´Â ½©¿¡¼ ÇÊ¿äÇÑ ¸ðµç Oracle ȯ°æº¯¼ö¸¦ ¼³Á¤ÇØ ÁÝ´Ï´Ù.
PHP 5.1.2 ¹× ÀÌÈÄ ¹öÀü
¡°re-factored¡± OCI8 ÀͽºÅÙ¼ÇÀº Instant Client¸¦ À§ÇÑ »õ·Î¿î ½ÅÅýº¸¦ Áö¿øÇÕ´Ï´Ù. re-factored ÀͽºÅÙ¼ÇÀº PHP 5.1.2¿¡ óÀ½À¸·Î Æ÷ÇԵǾúÀ¸¸ç, ÀÌÀü ¹öÀüÀÇ PHPÀÇ °æ¿ìpecl.php.net/package/oci8, pecl4win.php.net/ext.php/php_oci8.dll¿¡¼ ´Ù¿î·ÎµåÇÒ ¼ö ÀÖ½À´Ï´Ù.
Technical Note¿¡ ¸í½ÃµÈ ´ë·Î Instant Client RPMÀ» ¼³Ä¡Çß´Ù¸é, PHP¸¦ ¾Æ·¡¿Í °°ÀÌ ¼³Á¤ÇØ ÁÝ´Ï´Ù:
./configure \
--with-oci8=instantclient,/usr/lib/oracle/10.1.0.3/client/lib \
--prefix=$HOME/php --with-apxs=$HOME/apache/bin/a
pxs \
--enable-sigchild --with-config-file-path=$HOME/apache/conf
Instant Client Basic, SDK zip ÆÄÀÏÀ» »ç¿ëÇÏ´Â °æ¿ì, ¾ÐÃàÀ» Ǭ µð·ºÅ丮ÀÇ --with-oci8 ¿É¼ÇÀ» º¯°æÇØ ÁÝ´Ï´Ù. ±× ¿¹°¡ ¾Æ·¡¿Í °°½À´Ï´Ù:
--with-oci8=instantclient,$HOME/instantclient10_1
re-factored ¹öÀüÀÌ ¿Ã¹Ù¸£°Ô ¼³Ä¡µÇ¾ú´ÂÁö Á¡°ËÇÏ·Á¸é phpinfo() ½ÇÇà °á°ú¸¦ È®ÀÎÇÏ¸é µË´Ï´Ù. ¡°oci8.¡± Á¢µÎ¾î·Î ½ÃÀ۵Ǵ 7°¡Áö ¸Å°³º¯¼ö¸¦ È®ÀÎÇÒ ¼ö ÀÖÀ» °ÍÀÔ´Ï´Ù (ÀÌÀü ¹öÀü¿¡¼´Â ÀÌ ¸Å°³º¯¼ö°¡ Á¸ÀçÇÏÁö ¾Ê½À´Ï´Ù).
°á·Ð
ÀÌ ¹®¼°¡ ¿©·¯ºÐ¿¡°Ô µµ¿òÀÌ µÇ¾ú±â¸¦ ¹Ù¶ø´Ï´Ù. Áú¹®À̳ª ÀÇ°ßÀº OTN Instant Client ¶Ç´Â PHP Æ÷·³¿¡ ¿Ã·Á Áֽñ⠹ٶø´Ï´Ù.
|
|
|
|
|
|