本文为笔者以前的记录,虽然是Mac OS X 10.9的版本,但是应该也是能在10.10上完美成功
php是通过动态加载动态链接库来使用各个php扩展的。无论是mysql还是gd图形库,都是以动态链接库的形式发布的。我首先baidu了一下,Mac用户想要使用oracle的人真不少,但是大多数给出的方案都是重新编译php。很多人甚至不用Mac自带的apache2和php,直接自己编译apache和php,我个人是不赞同这样做的。既然他已经给你做好了php和apache,那这个基本上是最不会出问题的。所以我也就没有采用,准备选择编译成.so的形式来加载。
但是翻看了一个多小时,几乎没有编译so模块的文章,即使有编译的文章也都是靠macport,brew等第三方软件包下载zlib等各种库文件来编译,个人精神洁癖问题 ,这种方式也不在选择之列。
既然网上没有,那我就去看一下php和oracle的官方文档。但是oracle那里写的很啰嗦,居然还要安装oracle11g,php那里倒是找到了一篇关于动态链接库模块编译的东西。
有三种方法
啰哩啰唆的说了一堆,其实就是具体编译oci8.so然后在php.ini中加载。
上google搜索了一下有这么一个外国网站倒是有了一篇关于编译oci8的文章
其实就是要下载Oracle官方的instantclient,根据basic中的dylib文件和sdk中的头文件来编译,至于第二个sqlplus则是可有可无的东西,用来独立连接oracle数据库,官方下载地址 我当然不可能去下载10g的客户端,直接下载了11g的instantclient。 下载完成以后解压所有文件到一个文件夹instantclient_11_2里面,目录如下:

下面打开终端,复制必要的文件到系统目录下。
接下来下载编译oci8,其实这个可以用pecl来自动化完成。但是你必须安装好autoconf和Xcode命令行工具,autoconf我是直接编译安装的,这个百度搜索一下就行了,Xcode命令行工具本来我安装的,结果10.8-10.9的时候被升级干掉了,所以只能再安装一遍,我是后来编译出错,查看信息,发现是缺少头文件,当时很纳闷,都放到/usr/include了怎么还缺少,原来是命令行工具的include文件夹被干掉了。只能再重新安装。
用pecl很自动化的
然后出现提示:
这是要你提供instantclient动态链接库的目录的意思
直接输入instantclient,/usr/lib然后就编译好了oci8.so
如果没有pecl,那手动下载oci8的源代码:
php_oci8-1.3.4.tgz
解压zip文件进入目录
然后打开/etc/php.ini在extension的段落加上extension=oci8.so就行了,重启apache使用phpinfo函数就能看到oci8被成功加载了。