php添加oracle数据库扩展时,扩展加载不出来:
解决步骤:
1,首先安装与oracle数据库版本相对应的oracle客户端,并下载与数据库版本对应的oci8.dll和oci8_11g.dll扩展库,更新版本需安装oci8_12c.dll;
2,将扩展库文件分别拷贝至系统盘的system32目录和php的etc目录下各一份,扩展库的版本同时要与php版本相对应;
3,php5.4不支持oci8扩展,需使用5.4以下或者更新版本;
4,安装的oracle客户端如果精简版安装不上,需安装完整版,安装时选择“运行时”或“管理员”都可。
5,客户端安装完成后要配置环境变量,包括ORACLE_HOME,TNS_ADMIN等,path路径里要包括oracle_home,及bin目录,instantclient目录。
如:
ORACLE_HOME=D:\app\username\oracle\product\11.2.0\client_1\
TNS_ADMIN=D:\app\username\oracle\product\11.2.0\client_1\network\admin\
PATH=D:\app\username\oracle\product\11.2.0\client_1\;D:\app\username\oracle\product\11.2.0\client_1\BIN;D:\app\username\oracle\product\11.2.0\client_1\LIB;D:\app\username\oracle\product\11.2.0\client_1\instantclient\;
6,将oracle_home中的BIN目录里的oci.dll和ociclient.dll文件拷到系统盘的system32目录下
7,所有配置完成后,重新启动一下电脑
oci8扩展加载成功后,phpinfo上显示版本号为0.0.0.0.0:
解决步骤:
1,确认将bin目录下的oci.dll和ociclient.dll文件拷到了system32下;
2,确认扩展库的版本与oracle的版本相对应,且与php版本也对应;
3,确认环境变量配置没有出错;
4,如果以上都无误,将bin目录下所有dll文件拷至system32目录下(一个省事的办法,也可以慢慢试)
php连接oracle数据库成功后,oci_execute函数执行失败,但是不报错:
解决步骤:
1,考虑sql语句书写错误,是否含有中文?
2,确认该数据库用户是否拥有执行该语句的相应的权限
php从数据库获取到的数据中文乱码:
可能原因:oracle客户端与数据库端的编码不一致,且与php端的默认编码格式不一致
解决步骤:
1,修改oracle客户端注册表,HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\HOMExx\找到NLS_LANG项将其值设置为SIMPLIFIEDCHINESE_CHINA.ZHS16GBK(即gbk格式),或american_america.AL32UTF8(utf8格式),由oracle数据库的编码格式决定;
2,修改环境变量,增加NLS_LANG变量,值为上面相应的值;
3,重新启动电脑。
4,在调用时,如果是gbk格式,而php默认编码是utf8格式,则需要将取到数据的编码格式转换成utf8类型。