MAC OSX PHP7.2环境下安装pdo_oci扩展
PHP /
2018-02-23 /
阅读: 99
工作原因,需要使用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