为了不浪费你的时间,我将描述我所拥有的和我现在所拥有的。我的应用程序是用php编写的。它们与nginx+apache web服务器一起生活在redhat6服务器上。我们将数据存储在MySQL数据库中,但是我们有很多从Oracle和IBM Informix数据库的&mssql导入的数据。对于Oracle和Informix,我已经安装了客户端和编译库pdo oci.so和pdo Informix.so。几个月来,他们按预期工作。
但一周前,管理员制作了一个虚拟服务器的快照,并重新加载了它。现在,只有MySQL和mssql连接器可以工作,而Oracle和IBM客户机会出错。
甲骨文:-28759
Failed : SQLSTATE[HY000]: pdo_oci_handle_factory: ORA-28759: failure to open file (/usr/local/src/php-5.3.3/ext/pdo_oci/oci_driver.c:579)/opt/project/www/test.php149
IBM Informix:-23101
Failed : SQLSTATE=HY000, SQLDriverConnect: -23101 [Informix][Informix ODBC Driver][Informix]Unspecified System Error = -23101./opt/project/www/test.php146
好吧,正如官方文档所说,Informix错误与DB庠loacle和CLIENT庠LOCALE…等丢失的env变量有关。
这很奇怪,因为我一直在用这个字符串来连接:
$dbh = new PDO ("informix:host=example.ru; database=some_db; server=db_net; CursorBehavior=0; DB_LOCALE=en_US.57372; CLIENT_LOCALE=en_US.57372;", "db_login", "pass");
我试图为apache(httpd)设置这个env变量,但这个错误仍然存在。现在我在服务器重新启动后设置了这个变量,但是没有成功。可能是我做错了什么,或者在错误的地方或用户名。。。
关于Oracle,文档中说它与文件加载有关:
而web文档称,这主要是ssl错误和客户端连接的问题,即找不到ssl钱包文件。我用wallet与Oracle DB建立了TCPS安全连接,我记得让Instant client寻找正确的位置确实是个麻烦。除此之外,我还启用了客户机跟踪,但它只在我直接从终端使用sqlplus时才写入日志。当我运行php脚本时,我只得到错误,没有日志。
问题:
如何正确地启用Informix变量,或者如何解决这个问题
以不同的方式发布。
如何为oracle启用“网络跟踪”
看到他在找什么了吗?
如何存储这些变量以备将来使用
重新启动/重新加载/快照…等?
最佳答案
这可能与文件/目录权限而不是env变量有关。
oracle错误似乎表明它无法再打开/读取所需的文件。
informix-23101错误也可能是由于驱动程序无法读取区域设置支持所需的GLS文件造成的。
apache用户是否有权访问Informix客户机SDK目录和文件?
关于php - 快照启动后:Informix客户端-23101/Oracle即时客户端-28759,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33165132/