资讯专栏INFORMATION COLUMN

Mac OS X 10.9编译OCI8模块

tianhang / 2112人阅读

摘要:无论是还是图形库,都是以动态链接库的形式发布的。但是那里写的很啰嗦,居然还要安装,那里倒是找到了一篇关于动态链接库模块编译的东西。

  

本文为笔者以前的记录,虽然是10.9的版本,但是应该也是能在10.10上完美成功

最近要做图书馆查询服务的转换php,上次写oracle中间层的时候因为没有oci8模块和oracle实例,所以手工写代码没有调试,这次工作量有些庞大,所以花费了一些时间来安装oci8模块,方便php调试工作。

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那里倒是找到了一篇关于动态链接库模块编译的东西。

有三种方法

重新编译整个php,./configure --with-oci8=shared

以动态链接库的形式

以静态链接库的形式

啰哩啰唆的说了一堆,其实就是具体编译oci8.so然后在php.ini中加载。


上google搜索了一下有这么一个外国网站倒是有了一篇关于编译oci8的文章

  

OCI8 relies on OS X having several client libraries and tools from
Oracle installed on OS X. For most intents and purposes download the
64-bit version of the following files under the title "Version
10.2.0.4 (64-bit)":

  

instantclient-basic-10.2.0.4.0-macosx-x64.zip
instantclient-sqlplus-10.2.0.4.0-macosx-x64.zip
instantclient-sdk-10.2.0.4.0-macosx-x64.zip

其实就是要下载Oracle官方的instantclient,根据basic中的dylib文件和sdk中的头文件来编译,至于第二个sqlplus则是可有可无的东西,用来独立连接oracle数据库,官方下载地址 我当然不可能去下载10g的客户端,直接下载了11g的instantclient。 下载完成以后解压所有文件到一个文件夹instantclient_11_2里面,目录如下:

下面打开终端,复制必要的文件到系统目录下。

sudo cp instantclient_11_2/sdk/include/*.h /usr/include(这个/usr/include文件夹是Xcode安装命令行工具以后有的)
sudo cp instantclient_11_2/sqlplus /usr/bin(这个其实就是安装sqlplus客户端,其实不弄也可以的)
sudo cp instantclient_11_2/*.dylib /usr/lib
sudo cp instantclient_11_2/*.dylib.* /usr/lib(这其实就是复制lib动态链接库)

# 下面到/usr/lib目录做个符号链接
sudo ln -s libclntsh.dylib.10.1 libclntsh.dylib

接下来下载编译oci8,其实这个可以用pecl来自动化完成。但是你必须安装好autoconf和Xcode命令行工具,autoconf我是直接编译安装的,这个百度搜索一下就行了,Xcode命令行工具本来我安装的,结果10.8-10.9的时候被升级干掉了,所以只能再安装一遍,我是后来编译出错,查看信息,发现是缺少头文件,当时很纳闷,都放到/usr/include了怎么还缺少,原来是命令行工具的include文件夹被干掉了。只能再重新安装。

用pecl很自动化的

sudo pecl install oci8

然后出现提示:

Please provide the path to the ORACLE_HOME directory. 
Use"instantclient,/path/to/instant/client/lib" 
if you"re compiling with Oracle Instant Client [autodetect] :

这是要你提供instantclient动态链接库的目录的意思
直接输入instantclient,/usr/lib然后就编译好了oci8.so
如果没有pecl,那手动下载oci8的源代码:

php_oci8-1.3.4.tgz

解压zip文件进入目录

phpize
./configure --with-oci8=shared,instantclient,/usr/lib 看到这里大家都明白了,其实就是和pecl一样,要你提供lib文件的目录位置
make
make install

然后打开/etc/php.ini在extension的段落加上extension=oci8.so就行了,重启apache使用phpinfo函数就能看到oci8被成功加载了。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/21029.html

相关文章

  • Mac OS X 10.9配置AMP环境

    摘要:写一个简单的文件测试一下配置结果,这次我们把文件建在我们个人的网站目录吧。现在环境搭建完成,要正常使用我们需要配置用户,默认用户的密码是空值,实际使用肯定需要修改一下。 2015年5月9日更新 更新内容:针对Mac OS X 10.10.3不能访问用户目录 http://localhost/~lulin 检查Apache版本是否升级 Server version: Apache/2...

    miracledan 评论0 收藏0
  • Mac OS xDebug PhpStorm 快速配置

    摘要:确定环境的干净。这一步要优化的话应该是做一个类似缓存的机制,对于这种配置加载的性能提升所以我们在调试必然是要在这里配置环境的接口。 前言 在网上找了一些相关配置的例子,觉得很多比较复杂,并且配置项过于多了,有很多冗余并不是最开始就需要的配置,所以写一下记录,也方便以后自己查阅。 一、brew 安装 php 在 Mac OS 这边不需要手动去下载编译打包,直接使用 brew 进行快捷安装...

    forrest23 评论0 收藏0
  • PHP 5.3 连接 Oracle 的客户端及 PDO_OCI 模块安装

    摘要:连接数据库虽然不是最佳拍档,但组内开发确实有这样需求。安装是的连接数据库的简单客户端,不用安装一个客户端就可以连接数据库,有和版本。接下来还要让系统能够找到客户端的库文件,修改执行使环境变量生效。 php连接oracle数据库虽然不是最佳拍档,但组内开发确实有这样需求。如果没有参考合适的文档,这个过程还是挺折磨人的,下面是一个记录,原型是国外的一篇博客 Installing PDO_O...

    SwordFly 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<