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/.
Download the following files from Oracle website (yes, you need to create an account and accept terms):
- instantclient-basic-macos.x64-12.1.0.2.0.zip
- instantclient-sqlplus-macos.x64-12.1.0.2.0.zip
- instantclient-sdk-macos.x64-12.1.0.2.0.zip
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
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
I recommand to install Oracle Server with a VirtualBox VM preinstalled.
sudo /usr/local/bin/sqlplus oracle/[email protected]
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:
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.githubusercontent.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.githubusercontent.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.githubusercontent.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!
@davizanotto deserves a trophy, thanks!
In my case I downloaded the version 7.1.16 and from that folder (/ext/pdo_oci) I ran phpize, make and make install.