由于系统比较老旧,之前开发的环境为xampp 1.7.1,客户需要连接oracle,按照经验,启动了extension=php_oci8.dll和extension=php_pdo_oci.dll,结果报如下错误:
PHP Warning: PHP Startup: Unable to load dynamic library 'D:\\xampp_a\\php\\ext\\php_pdo_oci.dll' - \xd5\xd2\xb2\xbb\xb5\xbd\xd6\xb8\xb6\xa8\xb5\xc4\xc4\xa3\xbf\xe9\xa1\xa3\r\n in Unknown on line 0
百度了N多经验,没有解决,但有一点是对的,就是可能本xampp的版本自带的php_pdo_oci.dll文件不匹配,所以去网上下载了php_pdo_oci.dll文件,是一个打包的,支持PHP各种版本的都有,感谢那些先者们!跪拜~
不知道到底用哪一个,只能一个个的实验,最终32版本php 5.2.4.4-5.2.66都合适,正常启动。
如何配置还需要参照我的另一篇文章:PHP搭建远程连接Oracle数据库(xampp 1.8或PHP 5.3以上版本)
在时间代码中,发现报错:
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000]: OCIEnvNlsCreate: Check the character set is valid and that PHP has access to Oracle libraries and NLS data (ext\pdo_oci\oci_driver.c:560)' in D:\php_project\fda\oracle\config.php:27 Stack trace: #0 D:\php_project\fda\oracle\config.php(27): PDO->__construct('oci:dbname=//19...', 'FDA_FMG3', 'FDA_FMG3') #1 D:\php_project\fda\oracle\d.php(2): include('D:\php_project\...') #2 {main} thrown in D:\php_project\fda\oracle\config.php on line 27
尝试了无数种方案,均不行,最后猜测还是处在Oracle客户端dll(oci.dll,oraociei11.dll,orannzsbb11.dll)文件版本的问题,因为PHP 5.3一下的版本对oracle支持比较弱,而且是xampp集成化开发环境,会不会dll文件被整合到apache\bin目录下去了?一检查,发现apache\bin目录下真的有这三个文件,而且是10的版本(自带的,不支持oracle 11g),于是把instantclient_11_2目录下的这三个文件拷贝到下面,启动成功运行。