# Installation This procedure is tested on Mac OS X 10.12.6 with Developpers tools installed (xCode). PHP 5.6 installed with https://php-osx.liip.ch/. ## Preparation Download the following files from [Oracle website](http://www.oracle.com/technetwork/topics/intel-macsoft-096467.html) (yes, you need to create an account and accept terms): * [instantclient-basic-macos.x64-12.1.0.2.0.zip](http://www.oracle.com/technetwork/topics/intel-macsoft-096467.html) * [instantclient-sqlplus-macos.x64-12.1.0.2.0.zip](http://www.oracle.com/technetwork/topics/intel-macsoft-096467.html) * [instantclient-sdk-macos.x64-12.1.0.2.0.zip](http://www.oracle.com/technetwork/topics/intel-macsoft-096467.html) Create and unzip all theses files into a the directory `/usr/local/instantclient/12.1.0.2.0/`. This directory will looks like: ``` . ├── BASIC_README ├── SQLPLUS_README ├── adrci ├── genezi ├── glogin.sql ├── libclntsh.dylib.11.1 ├── libnnz11.dylib ├── libocci.dylib.11.1 ├── libociei.dylib ├── libocijdbc11.dylib ├── libsqlplus.dylib ├── libsqlplusic.dylib ├── ojdbc5.jar ├── ojdbc6.jar ├── sdk │   ├── SDK_README │   ├── demo │   ├── include │   ├── ott │   └── ottclasses.zip ├── sqlplus ├── uidrvci └── xstreams.jar ``` ## Create symlinks ``` sudo ln -s /usr/local/instantclient/12.1.0.2.0/sdk/include/*.h /usr/local/include/ sudo ln -s /usr/local/instantclient/12.1.0.2.0/sqlplus /usr/local/bin/ sudo ln -s /usr/local/instantclient/12.1.0.2.0/*.dylib /usr/local/lib/ sudo ln -s /usr/local/instantclient/12.1.0.2.0/*.dylib.11.1 /usr/local/lib/ sudo ln -s /usr/local/lib/libclntsh.dylib.11.1 /usr/local/lib/libclntsh.dylib ``` ## Test with sqlplus instantclient I recommand to install Oracle Server with a VirtualBox [VM preinstalled](http://tech.lds.org/wiki/Oracle_VM). ``` sudo /usr/local/bin/sqlplus oracle/oracle@192.168.56.101 ``` ## Install extension with pecl ```sh sudo pecl install oci8-2.0.10 # phpv5.2 - phpv5.6 sudo pecl install oci8 # phpv7 ``` If the script prompt you to provide the path to ORACLE_HOME directory, respond with: ``` instantclient,/usr/local/lib ``` > Note: If you got PECL error: ```sh touch $(brew --prefix php52)/lib/php/.lock && chmod 0644 $(brew --prefix php52)/lib/php/.lock # phpv5.2 touch $(brew --prefix php56)/lib/php/.lock && chmod 0644 $(brew --prefix php56)/lib/php/.lock # phpv5.6 touch $(brew --prefix php70)/lib/php/.lock && chmod 0644 $(brew --prefix php70)/lib/php/.lock # phpv7 ``` And your are done, normally pecl will automatically load the extension in your `php.ini`. If not, add the following line to your `php.ini`: ``` extension=oci8.so ``` Restart your HTTP Server and test. To installing `pdo_oci`. You must do following command: ``` mkdir -p /usr/local/lib/oracle/12.1.0.2.0/client ln -sf /usr/local/instantclient/12.1.0.2.0/sdk/include /usr/local/lib/oracle/11.2.0.4/client/ cd /tmp pecl download pdo_oci tar -xvf PDO_OCI-1.0.tgz cd PDO_OCI-1.0 ``` After that, download this patch and apply: ``` wget https://gist.github.com/krisanalfa/e0beaa512b4677c51a7c/raw/214c36a65685c9c24102ad7b703d040a7fb60243/config.m4.patch patch config.m4 < config.m4.patch ``` Also, we need to patch `pdo_oci.c` file: ``` wget https://gist.github.com/krisanalfa/1bb09ad8f9147937bbeb/raw/b66ee62e8f4601a0f669e40a619881734787d4cd/pdo_oci.c.patch patch pdo_oci.c < pdo_oci.c.patch ``` And finaly, patch `configure` file: ``` wget https://gist.github.com/alexbonhomme/415ab5565fccc5cd22a7a63dfdf2f5a1/raw/f51f46bf3584d567f057c21a95d8ab96f721d085/configure.patch patch configure < configure.patch ``` We should tell our configuration to use `12.1.0.2.0` version, so it will find the right version in our system. ``` phpize ./configure --with-pdo-oci=instantclient,/usr/local/lib,12.1.0.2.0 ``` Build it and install it: ``` make make install ``` After this open your `php.ini` and add this line: ``` extension=pdo_oci.so ``` Test it!