yii2 php7 pdo oci,PHP7 连oracle 11g 可能出现的pdo_oci_handle_factory,Check the character问题和解决方法...

错误代码:

SQLSTATE[HY000]: pdo_oci_handle_factory: Error while trying to retrieve text for error ORA-12541

错误代码:

SQLSTATE[HY000]: OCIEnvNlsCreate: Check the character set is valid and that PHP has access to Oracle libraries and NLS data

解决上述问题可以通过如下方法

首先新建文件 vim /etc/profile.d/oracle.sh

#!/bin/env sh

ORACLE_HOME=/usr/lib/oracle/12.1/client64

TNS_ADMIN=$ORACLE_HOME/network/admin

NLS_LANG=AMERICAN_AMERICA.AL32UTF8

LD_LIBRARY_PATH=$ORACLE_HOME/lib

PATH=$PATH:$ORACLE_HOME/bin:$ORACLE_HOME/lib

export ORACLE_HOME TNS_ADMIN NLS_LANG LD_LIBRARY_PATH PATH

其中 TNS_ADMIN=$ORACLE_HOME/network/admin  是用于指定存放oracle 数据库连接信息的路径,如果你不是次方式连接可以去除此行

NLS_LANG 指定字符集参数,我这边使用的是AL32UTF8 ,请根据你实际情况进行指定。oracle 更多字符集请参考

然后修改 php-fpm.conf  顶部新增如下

. /etc/profile.d/oracle.sh

最终如下效果

prefix=/usr/local/php

exec_prefix=${prefix}

php_fpm_BIN=${exec_prefix}/sbin/php-fpm

php_fpm_CONF=${prefix}/etc/php-fpm.conf

php_fpm_PID=${prefix}/var/run/php-fpm.pid

#引入环境变量处

. /etc/profile.d/oracle.sh

最后修改 php-fpm.d/www.conf 文件找到配置进程环境变量的地方,可查找 “env[HOSTNAME]”

新增如下:

;Oracle连接环境变量

env[ORACLE_HOME] =/usr/lib/oracle/12.1/client64

env[LD_LIBRARY_PATH] = /usr/lib/oracle/12.1/client64/lib

重启 php-fpm 搞定

如果开发框架为yii2的话记得修改配置如下:

'dsn' => 'oci:dbname=XXX_online;charset=al32utf8',

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值