MS14-045: 커널 모드 드라이버용 보안 업데이트에 대한 설명: 2014년 8월 12일

 

윈도우7 64bit 에서 가장 문제가 되는듯 하네요.

 

심하면 블루 스크린에... 부팅까지 안되고, 마소에서 직접 삭제 권고까지 할 정도니...

 

 

 

Microsoft는 보안 공지 MS14-045를 발표했습니다. 이 보안 공지에 대해 자세히 알아보십시오.

이 보안 업데이트에 대한 도움말 및 지원을 받는 방법

업데이트 설치 도움말: Microsoft Update 지원



IT 전문가용 보안 솔루션: TechNet 보안 문제 해결 및 지원



Windows 기반 컴퓨터 Windows를 바이러스 및 맬웨어로부터 보호: 바이러스 솔루션 및 보안 센터



지역별 지원 정보: 국가별 지원

 

 

 

이 보안 업데이트의 알려진 문제

  • 알려진 문제 1
    이 보안 업데이트를 설치한 후 기본 글꼴 디렉터리(%windir%\fonts\)가 아닌 위치에 설치된 글꼴을 활성 세션에 로드하는 경우 이 글꼴을 변경할 수 없습니다. 이러한 글꼴을 변경, 대체 또는 삭제하려는 시도가 차단되고, "사용 중인 파일" 메시지가 나타납니다.

    자세한 내용은 다음 Microsoft 웹 페이지를 참조하십시오.
    글꼴 설치 및 삭제
    AddFontResource 함수
    AddFontResourceEx 함수
    RemoveFontResource 함수
    RemoveFontResourceEx 함수


  • 알려진 문제 2
    Microsoft는 다음 업데이트를 설치한 후 글꼴이 제대로 렌더링되지 않는 문제를 조사하고 있습니다.
    2982791 MS14-045: 커널 모드 드라이버용 보안 업데이트에 대한 설명: 2014년 8월 12일
    2970228 Windows에서 러시아 루블에 대한 새로운 통화 기호를 지원하기 위한 업데이트 (영어로 표시될 수 있습니다)
    2975719 Windows RT 8.1, Windows 8.1 및 Windows Server 2012 R2에 대한 2014년 8월 업데이트 롤업
    2975331 Windows RT, Windows 8 및 Windows Server 2012에 대한 2014년 8월 업데이트 롤업
    상태
    이러한 문제에 대한 조사가 진행되는 동안 해당 업데이트에 대한 다운로드 링크를 제거했습니다.

    완화
    제어판에서 프로그램 및 기능 항목을 열고 설치된 업데이트 보기를 클릭합니다. 다음 중 현재 설치된 업데이트를 모두 찾아 제거합니다.
    • KB2982791
    • KB2970228
    • KB2975719
    • KB2975331
  • 알려진 문제 3
    Microsoft는 다음 업데이트를 설치한 후 0x50 중지 오류 메시지(버그 확인)가 표시되고 시스템 작동이 중단될 수 있는 문제를 조사하고 있습니다.
    2982791 MS14-045: 커널 모드 드라이버용 보안 업데이트에 대한 설명: 2014년 8월 12일
    2970228 Windows에서 러시아 루블에 대한 새로운 통화 기호를 지원하기 위한 업데이트 (영어로 표시될 수 있습니다)
    2975719 Windows RT 8.1, Windows 8.1 및 Windows Server 2012 R2에 대한 2014년 8월 업데이트 롤업
    2975331 Windows RT, Windows 8 및 Windows Server 2012에 대한 2014년 8월 업데이트 롤업
    이 조건은 영구적일 수 있으며 시스템이 제대로 시작되지 못하게 할 수 있습니다.

    상태
    이러한 문제에 대한 조사가 진행되는 동안 해당 업데이트에 대한 다운로드 링크를 제거했습니다.

    완화
    1. 안전 모드에서 컴퓨터를 다시 시작합니다.
      • Windows 7
      • Windows 8 및 Windows 8.1:
        1. Windows 8.1용 설치 미디어(예: DVD 또는 USB)가 있는 경우 설치 미디어를 사용하여 컴퓨터를 시작합니다. DVD 또는 USB 플래시 드라이브를 넣고 컴퓨터를 다시 시작합니다. "DVD에서 부팅하려면 아무 키나 누르십시오."와 같은 메시지가 표시되면 다음을 수행하십시오. 이러한 메시지가 표시되지 않는 경우 컴퓨터가 DVD 또는 USB로 먼저 시작되도록 컴퓨터의 BIOS 설정에서 다시 시작 순서를 변경해야 할 수 있습니다. Windows 설치 페이지가 표시되면 컴퓨터 복구를 클릭하여 Windows 복구 환경을 시작해야 합니다.
        2. 미디어가 없는 경우 전원 단추를 사용하여 시작 프로세스 중에 컴퓨터를 세 번 다시 시작해야 합니다. 그러면 Windows 복구 환경이 시작되어야 합니다.
        3. 컴퓨터가 Windows 복구 환경에서 시작되자마자 옵션 선택 화면에서 문제 해결을 탭하거나 클릭합니다. 시작 설정 옵션이 표시되지 않는 경우 고급 옵션을 탭하거나 클릭합니다.
        4. 시작 설정을 탭하거나 클릭한 다음 다시 시작을 탭하거나 클릭합니다.
        5. 시작 설정 화면에서 원하는 시작 설정을 선택합니다. (안전 모드는 4를 누릅니다.)
        6. 관리자 권한이 있는 사용자 계정을 사용하여 컴퓨터에 로그인합니다.
    2. fntcache.dat 파일을 삭제합니다. 이렇게 하려면 명령 프롬프트 에서 다음 명령을 입력하고 Enter 키를 누릅니다.
      del %windir%\system32\fntcache.dat
    3. fntcache.dat를 삭제한 후 컴퓨터를 다시 시작합니다. 이제 컴퓨터가 시작되어야 합니다.
    4. 시작, 실행을 차례로 클릭하고 열기 상자에 regedit를 입력한 다음 확인을 클릭합니다.
    5. 레지스트리에서 다음 하위 키를 찾아 클릭합니다.
      HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\Fonts\ 
    6. Fonts 레지스트리 하위 키를 마우스 오른쪽 단추로 클릭한 다음 내보내기를 클릭합니다.
    7. 내보낸 reg 파일에 대한 이름을 입력하고 이 파일을 저장할 위치를 선택합니다. 나중에 이 파일을 사용하여 다음 단계에서 제거되는 글꼴 등록을 복원합니다.
    8. reg 파일을 저장한 후 Fonts 레지스트리 하위 키 아래에서 다음 조건을 충족하는 데이터 필드에 대한 레지스트리 값을 찾습니다.
      • 파일 이름만 있는 것이 아니라 전체 파일 경로가 포함됨
      • 전체 파일 경로가 ".otf" 확장명으로 끝납니다. (이 확장명은 OpenType 글꼴 파일을 나타냅니다.) 
        그림 축소그림 확대
        OpenType 글꼴 파일
        그림 확대를 위해 클릭하시기 바랍니다
    9. fntcache.dat 파일을 다시 삭제합니다. (그러면 이 파일이 다시 만들어집니다.) 이렇게 하려면 명령 프롬프트에서 다음 명령을 입력한 다음 Enter 키를 누릅니다.
      del %windir%\system32\fntcache.dat
    10. 제어판에서 프로그램 및 기능 항목을 열고 설치된 업데이트 보기를 클릭합니다. 다음 중 현재 설치된 업데이트를 모두 찾아 제거합니다.
      • KB2982791
      • KB2970228
      • KB2975719
      • KB2975331
    11. 컴퓨터를 다시 시작합니다.
    12. 앞서 저장한 reg 파일을 찾고 이 파일을 마우스 오른쪽 단추로 클릭한 다음 병합을 클릭하여 이전에 제거한 글꼴 레지스트리 값을 복원합니다.

      참고 문제가 되는 업데이트가 제거되었으므로 해당 레지스트리 값을 안전하게 다시 추가할 수 있습니다. 

 

 

기술 자료: 2982791 - 마지막 검토: 2014년 8월 19일 화요일 - 수정: 3.0
본 문서의 정보는 다음의 제품에 적용됩니다.
  • Windows Server 2012 R2 Datacenter
  • Windows Server 2012 R2 Standard
  • Windows Server 2012 R2 Essentials
  • Windows Server 2012 R2 Foundation
  • Windows 8.1 Enterprise
  • Windows 8.1 Pro
  • Windows 8.1
  • Windows RT 8.1
  • Windows Server 2012 Datacenter
  • Windows Server 2012 Standard
  • Windows Server 2012 Essentials
  • Windows Server 2012 Foundation
  • Windows 8 Enterprise
  • Windows 8 Pro
  • Windows 8
  • Windows RT
  • Windows Server 2008 R2 Service Pack 1 을(를) 다음과 함께 사용했을 때
    • Windows Server 2008 R2 Datacenter
    • Windows Server 2008 R2 Enterprise
    • Windows Server 2008 R2 Standard
    • Windows Web Server 2008 R2
    • Windows Server 2008 R2 Foundation
  • Windows 7 Service Pack 1 을(를) 다음과 함께 사용했을 때
    • Windows 7 Ultimate
    • Windows 7 Enterprise
    • Windows 7 Professional
    • Windows 7 Home Premium
    • Windows 7 Home Basic
    • Windows 7 Starter
  • Windows Server 2008 Service Pack 2 을(를) 다음과 함께 사용했을 때
    • Windows Server 2008 Datacenter
    • Windows Server 2008 Enterprise
    • Windows Server 2008 Standard
    • Windows Web Server 2008
    • Windows Server 2008 Foundation
    • Windows Server 2008 for Itanium-Based Systems
  • Windows Vista Service Pack 2 을(를) 다음과 함께 사용했을 때
    • Windows Vista Ultimate
    • Windows Vista Enterprise
    • Windows Vista Business
    • Windows Vista Home Premium
    • Windows Vista Home Basic
    • Windows Vista Starter
  • Microsoft Windows Server 2003 Service Pack 2 을(를) 다음과 함께 사용했을 때
    • Microsoft Windows Server 2003, Datacenter Edition (32-bit x86)
    • Microsoft Windows Server 2003, Enterprise Edition (32-bit x86)
    • Microsoft Windows Server 2003, Standard Edition (32-bit x86)
    • Microsoft Windows Server 2003, Web Edition
    • Microsoft Windows Server 2003, Datacenter x64 Edition
    • Microsoft Windows Server 2003, Enterprise x64 Edition
    • Microsoft Windows Server 2003, Standard x64 Edition
    • Microsoft Windows Server 2003, Datacenter Edition for Itanium-Based Systems
    • Microsoft Windows Server 2003, Enterprise Edition for Itanium-based Systems
키워드: 
atdownload kbbug kbexpertiseinter kbfix kbsecbulletin kbsecurity kbsecvulnerability KB2982791

 

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 MDB2ADOdb 등의 추상화 클래스(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용 바이너리를 보완하는 역할을 담당하게 됩니다.

  1. (installer build가 아닌) PHP 바이너리 zip 파일과 Apache를 다운로드합니다. PHP 매뉴얼의 Windows 시스템 설치 가이드를 참고하여 설치 작업을 수행합니다. OTN의 오픈 소스 개발자 센터에서 "Oracle, PHP, and Apache on Windows 2000/XP 환경의 Oracle, PHP, Apache 설치,"와 같은 유용한 기술정보를 참고하실 수 있습니다. 이 문서에는 Oracle 10g를 전체 설치하는 방법이 설명되어 있습니다 (Instant Client 설치 시에는 이 작업이 필요하지 않습니다).

    다음 단계로 진행하기 전에 PHP가 제대로 동작하는지 확인합니다. 이 단계에서는 오라클 연동 기능은 지원되지 않습니다.

  2. OTN의 Instant Client 페이지에서 Instant Client Basic package for Windows를 다운로드합니다. zip 파일의 사이즈는 대략 30 MB 정도 됩니다.

  3. 서브디렉토리(예: 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"로 설정합니다.)

  4. 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.

  5. php.ini를 편집하고 OCI8 익스텐션의 커멘트 기호를 삭제합니다:

    extension=php_oci8.dll
    

    extension_dir 항목에 PHP 익스텐션 DLL의 전체 경로를 설정합니다. PHP4의 경우 DLL은 PHP 소프트웨어의 “extensions” 서브디렉토리에 위치합니다. PHP5에서는 “ext” 서브디렉토리에 위치합니다.

  6. 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 설치 시에는 이 작업이 필요하지 않습니다.

  1. 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
    
  2. PHP를 다운로드하여 tar 압축을 풉니다.
  3. OTN의 Instant Client 페이지에서 Basic/SDK Instant Client Package를 다운로드합니다. 두 RPM의 전체 크기는 약 30MB 가량 됩니다.
  4. 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에 헤더를 생성합니다.

  5. 백업 후 이 패치를 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 스크립트에서 헤더 파일의 서브디렉토리를 정확하게 찾을 수 있습니다.

  6. “configure” 스크립트를 최상위 PHP 디렉토리에서 rebuild 합니다.
    cd php-4.3.9
    rm -rf autom4te.cache config.cache
    ./buildconf --force
    
  7. 새로운 옵션을 이용하여 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
    
  8. PHP를 rebuild합니다.
    make
    make install
    
  9. php.ini 파일을 --with-config-file-path에서 지정된 위치에 복사합니다.
    cp php.ini-recommended $HOME/apache/conf/php.ini
    
  10. 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를 이전 상태로 되돌리고 캐시 파일을 제거한 후 “./buildconf --force and configure”를 실행한 다음, 발생한 문제가 패치 작업과 관련된 것인지 확인합니다.

“configure”의 타임스탬프가 현재 시점으로 설정되어 있는지 확인합니다. 캐시 파일을 모두 제거하고 필요한 경우 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 포럼에 올려 주시기 바랍니다.

출처 : http://www.oracle.com/technology/global/kr/pub/notes/technote_php_instant.html

+ Recent posts

티스토리 툴바