Linux系统,使用PHP连接ORACLE数据库
首先安装ORACLE的InstantClient环境:在这里下载
因为我需要连接11.2.0.4.0版本的ORACLE数据库,所以选取下载了basic-11.2.0.4.0-1.x86_64.rpm和devel-11.2.0.4.0-1.x86_64.rpm,
使用如下命令安装:
rpm -ivh oracle-instantclient11.2-basic-11.2.0.4.0-1.x86_64.rpm rpm -ivh oracle-instantclient11.2-devel-11.2.0.4.0-1.x86_64.rpm
64位系统需要创建32位对应的软链接,原因不明,但经实测如果不创建、后续安装扩展时的编译过程确实会出问题:
ln -s /usr/include/oracle/11.2/client64 /usr/include/oracle/11.2/client ln -s /usr/lib/oracle/11.2/client64 /usr/lib/oracle/11.2/client
接下来创建对应环境变量:
vim /etc/profile.d/oracle.sh export ORACLE_HOME=/usr/lib/oracle/11.2/client64 export LD_LIBRARY_PATH=$ORACLE_HOME/lib
保存后执行source使更改生效:
source /etc/profile.d/oracle.sh
使用hostname命令查看当前系统主机名,并将主机名加入hosts文件:
vim /etc/hosts # 加入这一行 127.0.0.1 主机名
接下来根据你要使用的数据库连接方式选择安装对应的PHP扩展,
如果要使用PDO连接,就安装PDO_OCI;如果要使用oci_connect函数链接,就安装OCI8。
以下逐一说明安装步骤。
安装PDO_OCI
首先下载并解压源码包:
wget https://pecl.php.net/get/PDO_OCI-1.0.tgz tar -xvf PDO_OCI-1.0.tgz cd PDO_OCI-1.0
这玩意1.0版本后再也没更新过,默认是不支持11.2版本的,需要按以下操作修改源码:
vim config.m4 #在第10行左右,有很多elif,在其中添加如下语句 elif test -f $PDO_OCI_DIR/lib/libclntsh.$SHLIB_SUFFIX_NAME.11.2; then PDO_OCI_VERSION=11.2 #转到第100行往下找,找到格式与下方代码相似的部分并添加如下语句 11.2) PHP_ADD_LIBRARY(clntsh, 1, PDO_OCI_SHARED_LIBADD) ;;
编辑完成后保存即可。
先尝试编译安装,如果过程中报function_entry相关的错误则进行如下操作:
vim pdo_oci.c
将34行的function_entry修改为zend_function_entry
开始编译安装:
phpize ./configure --with-pdo-oci=instantclient,/usr,11.2 make make install
安装完成后修改php.ini文件中添加一行:
extension=pdo_oci.so
重启服务即可。
可以使用phpinfo()验证安装,出现以下内容则代表安装成功:
安装OCI8
首先下载并解压源码包:
wget https://pecl.php.net/get/oci8-2.0.12.tgz tar -xvf oci8-2.0.12.tgz cd oci8-2.0.12
这一步是基于我使用的PHP版本选择了2.0.12,你可以在这里挑选合适自己的版本。
然后直接编译安装:
phpize ./configure --with-oci8=shared,instantclient,/usr/lib/oracle/11.2/client64/lib make make install
安装完成后修改php.ini文件中添加一行:
extension=oci8.so
重启服务即可。
可以使用phpinfo()验证安装,出现以下内容则代表安装成功:
欢迎转载,转载时请注明来源。