English 中文(简体)
Ubuntu 10.04 zend服务器和informix连接
原标题:Ubuntu 10.04 zend-server and informix connection

我有一个问题,要获得一个连接到InformixDB的PHP脚本。我考虑安装Zend服务器社区版,此外还有pdo_informix扩展。当我在浏览器中运行Zend服务器管理时,我看到pdo_informix扩展名标记为“绿色”。之后,我在Ubuntu上安装了Informix ClientSDK 3.70。我已经将$INFORMIXDIR环境变量设置到/etc/profile中,并将PATH变量设置到bin目录中。安装目录是/opt/IBM/ininformix。当我现在尝试用PHP编写代码时

try{

 $db = new PDO("informix:host=xx.xx.com;database=xxx;server=xxx_net; protocol=onsoctcp;", databaseuser, databasepassword);
 $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
 echo "test";

}catch (PDOException $e){

 echo "<br/>Failed: ". $e->getMessage()."<br/>";
}

我在浏览器中遇到以下错误:

Failed: SQLSTATE=HY000, SQLDriverConnect: -23101 [Informix]
   [Informix ODBC Driver][Informix]Unspecified System Error = -23101.

如果我试图将Ubuntu上的ServerStudio连接到InformixDB,它运行得很好,但我猜他们使用的是JDBC驱动程序。

如果我转到Informix clientsdk的bin目录,就会发现一个名为finderr的应用程序。如果我执行finderr-23101,我会得到以下输出:

./finderr -23101
-23101 Unable to load locale categories.

所以我想我必须设置DB_LOCALE、CLIENT_LOCALE环境变量。。。我的服务器使用en_us.819,而我的客户端使用en_us.utf8。

最佳回答

无法加载语言环境类别通常意味着没有为试图访问Informix语言环境数据的软件设置INFORMIXDIR(位于$INFORMIXDIR/gls中),或者语言环境类别未指定或指定错误。这些通常是环境变量CLIENT_LOCALE和DB_LOCALE,它们的值如en_us.8859-1(默认值)或es_es.utf8(西班牙语在西班牙使用UTF-8)。

我会集中精力确保浏览器的环境设置正确。这可能取决于您如何启动它。

还有其他一些环境变量可以使用——DBLANG、LANG和LC_*名称集。但是,如果设置了CLIENT_LOCALE和DB_LOCALE,则不太可能需要它们。话虽如此,但我最近发现,使用Informix4GL(I4GL),除非设置了DBLANG以及*LOCALE变量,否则一些用表名等日语字符编写的代码将无法编译。然而,LC*和LANG变量似乎对结果的影响微乎其微。

问题回答

您可能需要设置<code>LD_LIBRARY_PATH</code>。我这样做是为了:

export LD_LIBRARY_PATH=$INFORMIXDIR/lib/:$INFORMIXDIR/lib/cli:$INFORMIXDIR/lib/esql:
export PATH=$INFORMIXDIR/bin:$INFORMIXDIR/lib:/usr/local/bin:/usr/bin:/bin

如果这没有帮助,那么您可以尝试使用unixODBC。PHP似乎使用了某种ODBC。在unixODBC在线手册中有一篇关于连接Informix的文章-请阅读。使用isql(交互式SQL)unixODBC工具连接到配置的ODBC数据库。

如果isql由于相同的错误而无法连接到数据库,则可以使用strace查看ODBC驱动程序无法加载的库。





相关问题
Brute-force/DoS prevention in PHP [closed]

I am trying to write a script to prevent brute-force login attempts in a website I m building. The logic goes something like this: User sends login information. Check if username and password is ...

please can anyone check this while loop and if condition

<?php $con=mysql_connect("localhost","mts","mts"); if(!con) { die( unable to connect . mysql_error()); } mysql_select_db("mts",$con); /* date_default_timezone_set ("Asia/Calcutta"); $date = ...

定值美元

如何确认来自正确来源的数字。

Generating a drop down list of timezones with PHP

Most sites need some way to show the dates on the site in the users preferred timezone. Below are two lists that I found and then one method using the built in PHP DateTime class in PHP 5. I need ...

Text as watermarking in PHP

I want to create text as a watermark for an image. the water mark should have the following properties front: Impact color: white opacity: 31% Font style: regular, bold Bevel and Emboss size: 30 ...

How does php cast boolean variables?

How does php cast boolean variables? I was trying to save a boolean value to an array: $result["Users"]["is_login"] = true; but when I use debug the is_login value is blank. and when I do ...

热门标签