我已使用 ODBC 将 openSUSE LAMP 和 Ubuntu LAMP 服务器连接到 DB2。我们用于开发环境的 openSUSE 系统和最终部署将在 Ubuntu 系统上。在 Ubuntu 上,当 SQL 语句返回空值时,我们会出现段错误(请参阅相关错误报告的链接),但在 openSUSE 上不会发生这种情况。两台机器都运行 64 位,以下是两台机器及其软件的版本:
OS Version Kernel Apache PHP
openSUSE 12.2 3.4.11-2.16-default 2.2.22 5.3.15
Ubuntu 11.04 2.6.38-11-server 2.2.17 5.3.22-1~dotdeb.0
(upgraded from 5.3.5-1ubuntu7)
链接:
https://bugs.php.net/bug.php?id=59405
https://bugs.php.net/bug.php?id=54007
阅读 php.net 上的更新日志后发现,该错误似乎已在 5.3.11 中修复,但升级仍未解决我们的问题。我最终逐行比较了两个服务器的 phpinfo() 输出,发现其中一部分似乎是一个危险信号,但不知道如何修复它。在 ODBC 部分中,ODBC_LFLAGS 选项显示:
openSUSE -L/usr/lib64
Ubuntu -L/usr/lib
两个系统都是 64 位的,并且配置为使用 64 位版本的 iSeriesAccess 和 unixODBC。由于 IBM 不支持 Ubuntu,因此必须使用 alien 将 iSeriesAccess 从 RPM 转换。不幸的是,升级 Ubuntu 或切换发行版对我们来说不是选择。我如何切换 Ubuntu 以使用 /usr/lib64 作为 ODBC_LFLAGS?还有什么我可能忽略的问题吗?