Leo Code

主页 > PHP > MAC OSX PHP7.2环境下安装pdo_oci扩展

MAC OSX PHP7.2环境下安装pdo_oci扩展

工作原因,需要使用oracle数据库,从网上找了一圈资料,很多都是下载PDO_OCI-1.0.tgz去编译,当然,他们是在php5.3-5.6环境下进行的。可是php7.2这套路子就不行了,因为7.2的PDO版本太高了,导致即便使用上面的方法编译出来的pdo_oci.so也是无法使用的。经过一番折腾,发现,原来php7.2源码包扩展目录下自带了pdo_oci的源码,直接编译就OK了,害的我走了那么多弯路。说一下具体方法吧:

1、先安装Oracle的客户端instantclient,下载地址:

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

2、选择对应的版本下载,选择Instant Client for Mac OS X (Intel x86) (32-bit and 64-bit),然后下载以下文件:

instantclient-basic-macos.x64-12.2.0.1.0-2.zip 
instantclient-sqlplus-macos.x64-12.2.0.1.0-2.zip
instantclient-sdk-macos.x64-12.2.0.1.0-2.zip

3、将三个包解压到同一目录下,像这样:

/usr/local/instantclient/12.2.0.1.0

4、依次执行以下命令,创建链接:

sudo ln -s /usr/local/instantclient/12.2.0.1.0/sdk/include/*.h /usr/local/include/
sudo ln -s /usr/local/instantclient/12.2.0.1.0/sqlplus /usr/local/bin/
sudo ln -s /usr/local/instantclient/12.2.0.1.0/*.dylib /usr/local/lib/
sudo ln -s /usr/local/instantclient/12.2.0.1.0/*.dylib.12.1 /usr/local/lib/
sudo ln -s /usr/local/lib/libclntsh.dylib.12.1 /usr/local/lib/libclntsh.dylib

5、测试一下客户端是否能够正确执行:

sudo /usr/local/bin/sqlplus

6、如果没安装php7.2先安装,这里可以使用brew安装,(我试过这里带上--with-pdo-oci=instantclient,/usr/local/lib,12.2.0.1.0选项,完成后仍然没有pdo_oci扩展,不知为什么,所以,还是老实的先安装完了,以后再安装扩展吧)

brew install php72

7、下载php7.2的源码包,下载地址:

http://php.net/downloads.php#v7.2.2

8、解压后进入下载目录php-7.2.2/ext/pdo_oci/,依次执行命令:

phpize
./configure --with-pdo-oci=instantclient,/usr/local/lib,12.2.0.1.0
make
make install

9、编辑php.ini文件加入扩展:

extension=pdo_oci

10、然后就没有然后了,就这样搞定了,启动php-fpm,用phpinfo()试一下吧。


遇到的错误

后来我再次编译安装时,遇到一个错误

Oracle libclntsh.dylib client library not found or its version is lower than 9

解决方法就是吧第8步的命令换成

./configure --with-pdo-oci=instantclient,/usr/local/instantclient/12.2.0.1.0