Mac세상

Mac OS High Sierra에 PHP + Oracle ( oci8 ) 연결하기

saltdoll 2018. 2. 14. 10:00
반응형

Mac OS High Sierra (10.13.3) PHP + Oracle DB (oci8) 개발 환경 만들기


[사전 준비 사항]

우선, PHP5 / PHP7 설치는 방법은 생략하도록 합니다.

참고 포스트: Mac OS High Sierra에서 PHP5.6, 7.0 설치법 포스트

 2018/01/04 - [Mac세상] - High Sierra(10.13) PHP 5.6, 7.0 멀티 설치하기

(해당 포스트는 oci8  연결 단계부터 작업 하도록 하도록 합니다.)



[옵션 사항들]

[옵션 - CodeIgnight 의 session를 위한 작업]

 php.ini에 Session Path설정하기

 session.save_path = "/tmp"


[옵션 - .httpaccess 접근 설정]

 httpd-vhosts.conf - 노란색 부분 필요

 <VirtualHost *.:80>

..

    <Directory /Users/saltdoll/PhpstormProjects/sales.posbankusa.com>

Require all granted

AllowOverride ALL

    </Directory>

</VitualHost>





<< High Sierra + PHP 7 + Orcacle(oci8) 연동하기 >>


(PHP Oracle 연동 테스트: 연동 실패시 화면)

$php -r "oci_connect();"

$ php -r "oci_connect();"

PHP Fatal error:  Uncaught Error: Call to undefined function oci_connect() in Command line code:1

Stack trace:

#0 {main}

  thrown in Command line code on line 1

 

Fatal error: Uncaught Error: Call to undefined function oci_connect() in Command line code:1

Stack trace:

#0 {main}

  thrown in Command line code on line 1

 


(PHP 확인하기)

$PHP --ini

$ php --ini

Configuration File (php.ini) Path: /usr/local/etc/php/7.0

Loaded Configuration File:         /usr/local/etc/php/7.0/php.ini

Scan for additional .ini files in: /usr/local/etc/php/7.0/conf.d

Additional .ini files parsed:      (none)




[ (1) Oracle Client 다운로드 및 설치 ]

- (64Bit) Basic, SDK는 필수 

(옵션:sqlplus - 테스트용으로 유용하니 설치 추천)

http://www.oracle.com/technetwork/topics/intel-macsoft-096467.html


-> (64bit) BasicSDK 다운로드


Installing Instant Client 12.2 on macOS

Instant Client 12.2 supports macOS High Sierra, Sierra and El Capitan.

(12.2가 High Sierra에 지원된다고 나오네요.)


다운로드한 파일을 폴더 생성해서 mv 시킵니다.

/usr/local/oracle/instantclient_64  ->생성 (경로는 다른곳이어도 괜찮습니다.)


(1) 폴더로 이동

Basic -> instantclient_64폴더

SDK폴더 -> instantclient_64폴더 아래 [sdk폴더]로 이동


[ Oracle Client와 OCI 폴더 형태 ] (참고: 파란색은 sqlplus 파일들)



(2) Sybolic Link 만들기

$ sudo ln -s /usr/local/oracle/instantclient_64/sdk/include/*.h /usr/local/include/

$ sudo ln -s /usr/local/oracle/instantclient_64/*.dylib /usr/local/lib/

$ sudo ln -s /usr/local/oracle/instantclient_64/*.dylib.12.1 /usr/local/lib/

$ sudo ln -s /usr/local/lib/libclntsh.dylib.12.1 /usr/local/lib/libclntsh.dylib


$ sudo ln -s /usr/local/oracle/instantclient_64/sdk/include/*.h /usr/local/include/

$ sudo ln -s /usr/local/oracle/instantclient_64/*.dylib /usr/local/lib/

$ sudo ln -s /usr/local/oracle/instantclient_64/*.dylib.12.1 /usr/local/lib/

$ sudo ln -s /usr/local/lib/libclntsh.dylib.12.1 /usr/local/lib/libclntsh.dylib


(옵션) SQL Plus 설치시 

$ sudo ln -s /usr/local/oracle/instantclient_64/sqlplus /usr/local/bin/


 (sqlplus로 원격접속 TEST)  sqlplus id/pw@ip:port/sid

sudo sqlplus scott/tiger@192.168.20.100:1521/orcl 





[ (2) PHP OCI8 다운로드 / 빌드 / 설치 ]

http://pecl.php.net/package/oci8  (최신버전)


다운로드 폴더를 축을 풀고, /usr/local/oracle/instantclient_64 하위에 위치시킴


phpize로 configure파일 만들기 (autoconf를 찾을수 없다고 나온다)

$cd /usr/local/oracle/instantclient_64/oci8-2.1.8/oci8-2.1.8

$sudo phpize

/usr/local/oracle/instantclient_64/oci8-2.1.8/oci8-2.1.8

** 오류 화면 **

$ sudo phpize

Password:

Configuring for:

PHP Api Version:         20151012

Zend Module Api No:      20151012

Zend Extension Api No:   320151012

Cannot find autoconf. Please check your autoconf installation and the

$PHP_AUTOCONF environment variable. Then, rerun this script.


우선적으로, autoconf를 설치해야 합니다.

autoconf 설치하기

$brew install autoconf

Please delete these paths and run `brew update`.

==> Downloading https://homebrew.bintray.com/bottles/autoconf-2.69.high_sierra.bottle.4.tar.gz

######################################################################## 100.0%

==> Pouring autoconf-2.69.high_sierra.bottle.4.tar.gz

==> Caveats

Emacs Lisp files have been installed to:

  /usr/local/share/emacs/site-lisp/autoconf

==> Summary

🍺  /usr/local/Cellar/autoconf/2.69: 71 files, 3.0MB

Lee-ui-MacBook-Air:oci8-2.1.8 saltdoll$


autoconf 설치가 완료되면, 

/usr/local/oracle/instantclient_64/oci8-2.1.8/oci8-2.1.8로 이동해서


"$sudo phpize"를 실행


configure 파일이 생성됩니다..

그 다음에, configure 를 설정하고, make 실행으로 컴파일, make install로 컴파일된 부분 설치.

$>./configure --with-oci8=instantclient,/usr/local/oracle/instantclient_64 

$>make

$>make install

make 이후에, make test를 하면, make에 대한 검사를 하는데시간이 많이 걸립니다. (비추천)

$ make install

Installing shared extensions:     /usr/local/Cellar/php70/7.0.26_18/lib/php/extensions/no-debug-non-zts-20151012/

 

 마지막으로 php.ini에 oci8.so 설정을 추가합니다.

/usr/local/etc/php/7.0/vi php.ini

extension 단어가 많은곳에 가서 마지막 줄에 아래 한줄 입력해주고 저장한다.

extension=oci8.so

 

아파치 재시작하면, 

성공 -_- !


[phpinof() 확인 화면]



출처: http://bestofsky.com/185 [맥 Mac] MAC + PHP + OCI8 연동 대서사시

(참고: https://gist.github.com/krisanalfa/09b765bb95012cd36fbd )




반응형
도움이 되셨다면 하트모양의 "♡ 공감"을 눌러주시면 큰 격려가 됩니다.
(로그인하지 않으셔도 가능)