需求&背景

最近根据项目需求,要在php中远程连接Oracel 11g Express数据库,为了开发方便,决定采用pdo,也就是php的PDO_OCI扩展,但是php安装的时候并没有安装PDO_OCI扩展,所以现在需要新增一个php扩展。

解决方案

首先上google搜索了一下,找到一片文章:http://shiki.me/blog/installing-pdo_oci-and-oci8-php-extensions-on-centos-6-4-64bit/, 这篇文章讲的很详细,非常感谢作者!

我在这里再简略总结一下:

  1. 首先要安装Oracle数据库的InstantClient: 下载地址:http://www.oracle.com/technetwork/topics/linuxx86-64soft-092277.html。根据自己的系统,选择合适的安装包,Basic和devel两个包都需要安装。因为我的服务器上并没有安装Oracle 11g Express数据库,所以需要安装, 如果服务器上已经装好了Oracle 11g Express数据库, 这一步应该是可以忽略的(仅仅是一个猜测,没有测试)

  2. 从pear下载PDO_OCI的源码包 (https://pecl.php.net/package/PDO_OCI), 选择1.0的stable版本即可, 可以使用wget直接下载到linux, 或者使用pecl命令(推荐):

    $ pecl download PDO_OCI
    $ tar -xvf PDO_OCI-1.0.tgz
    $ cd PDO_OCI-1.0

    因为PDO_OCI这个扩展已经很久没有更新了,需要编辑config.m4这个文件以支持11g或者更高版本的数据库, 具体如下:

    在第10行左右添加如下代码:

    elif test -f $PDO_OCI_DIR/lib/libclntsh.$SHLIB_SUFFIX_NAME.11.2; then
    PDO_OCI_VERSION=11.2

    在101行左右添加如下代码:

    11.2)
    PHP_ADD_LIBRARY(clntsh, , PDO_OCI_SHARED_LIBADD)
    ;;
  3. 然后就是用phpize这个工具进行编译安装:

    $ phpize
    //如果系统提示没有找到这个命令,只需要安装php-devel即可
    //$ yum install php-devel
    $ ./configure --with-pdo-oci=instantclient,/usr,11.2
    $ make
    $ sudo make install

    我在运行 ./configure --with-pdo-oci=instantclient,/usr,11.2后得到一个错误: checking for oci.h... configure: error: I'm too dumb to figure out where the include dir is in your instant client install 意思是说, 没有找到instant client 的include 文件夹, 这是为什么呢?继续google, 这个问题不多见,我花了很多时间在这个问题上面。最后看到一片文章下的评论:

    Changes for x86_64 November 10th 2010 at 09:11 am Some changes were required to get the configure to work on a 64 bit Redhat (Fedora 13) system.

    We installed the 64 bit version of oracle-instantclient-{devel,basic}.

    These installed in:
    /usr/lib/oracle/11.2/client64
    /usr/include/oracle/11.2/client64

    We created symlinks as follows:

    /usr/lib/oracle/11.2/client -> /usr/lib/oracle/11.2/client64
    /usr/include/oracle/11.2/client -> /usr/include/oracle/11.2/client64

    Then the "./configure --with-pdo-oci=instantclient,/usr,11.2" command worked fine!

    The reason for the symlinks instead of changing the variables in the oracle.sh is that the build/configure scripts seem to be hard coded for "client" (not client64) in many places. It was easer to create 2 symlinks than to change all the code in every script/config file.

    非常感谢这问网友。大概意思是在configure时查找的文件夹是/usr/lib/oracle/11.2/client 和/usr/include/oracle/11.2/client, 这两个文件夹位置的组成方式是:${prefix}/lib OR lib/oracle/${version}/client,而64bit 的Instant Client的安装目录都是client64,所以configure的时候找不到,解决这个问题只需要添加两个符号链接即可:

    $ ln -s /usr/lib/oracle/11.2/client64 /usr/lib/oracle/11.2/client
    $ ln -s /usr/include/oracle/11.2/client64 /usr/include/oracle/11.2/client

    添加好符号链接后,再次执行

    $ ./configure --with-pdo-oci=instantclient,/usr,11.2
    $ make
    $ sudo make install

    执行成功, 没有报错。

  4. make install 成功之后,在 /usr/lib64/php/modules/ 就会出现pdo_oci.so,然后在php的配置文件中激活pdo_oci扩展:

    $ vi /etc/php.d/pdo_oci.ini

    添加内容: extension=pdo_oci.so

重启apache就可以使用PDO_OCI扩展了。

如果您觉得阅读本文对您有帮助,欢迎转载本文,但是转载文章之后必须在文章页面明显位置保留此段声明,否则保留追究法律责任的权利。

作  者:blog.jpdou.top

原文链接:http://blog.jpdou.top/install-pdo_oci-extension-on-linux-64bit/

在CentOS 6.7 64位安装PHP的PDO_OCI扩展 Installing PDO_OCI extension on CentOS 6.7 64bit的更多相关文章

  1. CentOS 6.5 64位 安装Nginx, MySQL, PHP

    此篇文章参考了一些网站找的教程,自己遇到了很多坑,写一下自己的安装全过程. 服务器是腾讯云的.安装了centos 6.5系统. 一. 安装Nginx 1.首先安装GCC,make,C++编译器 yum ...

  2. CentOS 6.5 64位 安装zabbix-2.2.0

    安装环境: VM 10 + CentOS-6.5-x86_64-minimal 虚拟机网络是NAT方式, 动态IP Xshell登录到Centos操作 刚装的centos,啥都没有,先配一下yum 首 ...

  3. CentOS 6.4 64位 安装 jdk 6u45

    准备: 1.下载历史版本jdk 地址: http://java.sun.com/products/archive/ 下载的版本 jdk-6u45-linux-x64-rpm.bin  Linux x6 ...

  4. 阿里云服务器CentOS 5.7(64位)安装配置LAMP服务器(Apache+PHP5+MySQL)

    一.快速安装Apache+PHP5+MySql ----------------------------------------------------- 补充:由于163的yum源上只有php5.1 ...

  5. CentOS 7.4 64位安装配置MySQL8.0

    第一步:获取mysql YUM源 进入mysql官网获取RPM包下载地址 https://dev.mysql.com/downloads/repo/yum/   image.png 点击下载   im ...

  6. centos 6.3 64位安装php5.5及配置tengine

    PHP 用到的工具包: yum install gd-devel libjpeg-devel libpng-devel freetype-devel libxml2-devel curl-devel ...

  7. CentOS 6.4 64位 安装 mysql 5.6.24

    下载安装包 由于官网访问及版本选择下载不太方便,使用 suho 的源进行下载 http://mirrors.sohu.com/mysql/MySQL-5.6/ 下载如下三个安装包: MySQL-ser ...

  8. CentOS 7.0 64位 安装TFTP

    1.安装tftp软件# yum -y install tftp*2.修改配置文件 # vi /etc/xinetd.d/tftp server_args = -s /tftpboot '加-cdisa ...

  9. CentOS 7.6 64位安装docker并设置开机启动

    步骤如下 安装docker.docker-compose yum -y install docker-io docker-compose 启动docker service docker start 设 ...

随机推荐

  1. HihoCoder1470 : 公平的游戏

    描述 有一些人在玩一个游戏.游戏的舞台发生在一个 n 个点的树上. 这个游戏分为很多轮,每一轮都有一些玩家参与,每个玩家都会降落在一条给定的边上(不同玩家的边不同).之后这 n 个点上都会随机出现一个 ...

  2. saltstack master minion安装配置简单使用

    首先先了解下saltstack是什么,为什么使用它 它与Ansible.Puppet都属于集中管理工具,由于现在企业规模的不断庞大及业务的增长,所需要管理的服务器数量增多,而且大部分机器都属于同类业务 ...

  3. office2007下载地址

    thunder://QUFodHRwOi8vNDYuZHVvdGUub3JnOjgwODAvb2ZmaWNlMjAwN3Byby56aXBaWg==thunder://QUFodHRwOi8vNTEu ...

  4. SSH和SSM的比较

    当下流行的两种企业开发MVC开源框架,是我们Java程序猿必备知识能力.MVC,即模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑.数据.界 ...

  5. QDUOJ LC的课后辅导 单调递增栈

    LC的课后辅导 发布时间: 2015年9月19日 21:42   时间限制: 1000ms   内存限制: 256M 描述 有一天,LC给我们出了一道题,如图: 这个图形从左到右由若干个 宽为1 高不 ...

  6. Swift3.0 轮播图

    使用三个UIButton实现无限轮播:https://github.com/LXfeiYu/LXCarouselImages.git 喜欢的朋友给个星!!! 功能: 1.可以选择开启和关闭定时器 2. ...

  7. C#中var关键字用法分析

    原文连接 本文实例分析了C#中var关键字用法.分享给大家供大家参考.具体方法如下: C#关键字是伴随着.NET 3.5以后,伴随着匿名函数.LINQ而来, 由编译器帮我们推断具体的类型.总体来说,当 ...

  8. 535. Encode and Decode TinyURL(rand and srand)

    Note: This is a companion problem to the System Design problem: Design TinyURL. TinyURL is a URL sho ...

  9. Lightoj1093 【线段树】

    题意: 给出n个数,然后对于D区间的数求一个最大差值 思路: 区间最大最小...我居然没想到线段树... #include <bits/stdc++.h> using namespace ...

  10. HDU1501【简单DP】

    题意: 从a串和b串中顺序地取出是否能组成c串: 思路: dp[i][j] 代表从a串中取了i个,b串中取了j个的情况: #include <bits/stdc++.h> using na ...