1

不知道该去哪里。我有一个 PHP 脚本,它调用一个连接到 Informix 数据库的 PERL 脚本。当我将脚本运行到 Windows cmd 提示符时,此设置工作得很好,但是当我尝试在 cygwin 中通过 cron 运行它时,它会失败

[Informix][Informix ODBC 驱动程序]无法加载翻译共享库 (DLL)。(SQL-IM009)

我尝试将 Informix bin 目录 (/cygdrive/c/Program\ Files\ (x86)/IBM/Informix/Client-SDK/bin) 添加到 crontab 文件中的 PATH 变量中,但没有任何更改。我还尝试将同一目录添加到 crontab 文件中的 INFORMIXDIR 变量中,但随后出现以下错误消息

[Informix][Informix ODBC 驱动程序][Informix]未指定的系统错误 = -23101。(SQL-HY000)

如果我在 finderr.exe(由驱动程序提供)中查看该错误,我发现这意味着它无法加载语言环境类别或我的 INFORMIXDIR 不正确,但我不确定如何设置 CLIENT_LOCALE 或 DB_LOCALE。

然后我想我通过使用正确的目录分隔符解决了这个问题,并在 crontab 中删除了 INFORMIXDIR 变量的 bin 子目录,因为我再次遇到 SQL-IM009 错误。

我在 cygwin 中使用 Windows PHP 和 PERL 可执行文件,所以我不确定为什么如果我通过 cmd 提示符运行它,它为什么不能正常工作。有人知道这是为什么吗?

我在 Windows Server 2008 R2 云实例上运行它,并且我正在尝试复制一个工作设置,以便我们可以将它移动到异地位置。

4

2 回答 2

1

事实证明,cygwin 不喜欢 Client-SDK 所在的目录。一旦我将它重新安装到 C:/IBM/Informix/Client-SDK ,一切都开始工作了。我不确定问题是括号还是空格,但是让它们脱离路径似乎可以解决问题。

于 2012-12-13T19:25:30.487 回答
0

看起来更像是在 PATH 环境中使用反斜杠和斜杠组合的问题。*nix 的斜杠,WIN 和 DOS 的反斜杠。CLIENT、DBLOCALE、DBDATE 等可以在 WIN/DOS 中的 servernane.cmd 文件和 .profile、.cshrc、.login 等中设置,具体取决于您使用的 *nix shell。您可以将 Informix 二进制文件和其他支持文件安装在您喜欢的任何目录中,只要 INFORMIXDIR 环境指向安装的目录即可。我在 C:\INFORMIX 中安装了 11.70.FC6,在 C:\DBSPACES 中安装了我的 dbspace。

于 2012-12-14T02:45:35.100 回答