【问题标题】:Redhat with httpd24 connecting to Informix using DBIRedhat 和 httpd24 使用 DBI 连接到 Informix
【发布时间】:2019-09-12 20:04:44
【问题描述】:

我对此束手无策。我有 2 个 RH7 盒子,我刚刚安装了 httpd24 (v2.4.34)。他们运行 httpd (v2.4.6) 没有任何连接问题。现在,当我尝试从浏览器运行 Perl 脚本时,它们会失败并显示...

install_driver(Informix) failed: Can't load '/usr/local/lib64/perl5/auto/DBD/Informix/Informix.so' for module DBD::Informix: libifsql.so: cannot open shared object file: No such file or directory at /usr/lib64/perl5/DynaLoader.pm line 190.
 at (eval 5) line 3.
Compilation failed in require at (eval 5) line 3.
Perhaps a required shared library or dll isn't installed where expected
 at /var/www/html/app/cgi-bin/test_informix_odbc.cgi line 35.

但是当我从命令行运行相同的脚本时,作为“apache”,它运行得很好。所有 ENV 变量均已正确设置。

有人遇到过类似的事情吗?

【问题讨论】:

  • 距离我上次对 httpd 做任何事情已经过去了十年或更长时间(我认为应该是 1.3,可能更早),但是……在 httpd 中设置环境变量需要在配置中进行正确的设置文件,我相信。您是否备份了更新前的配置?您是否寻找过配置的差异?您是否安装/启用了mod_env? How to use the setEnv variable in Apache? 有帮助吗?
  • 完成所有这些。在所有常见的地方设置 var,甚至是一些奇怪的地方(/etc/profile、/etc/environment)。没有运气。厌倦了 InformixSDK 3.7 和 4.1。非常令人沮丧。
  • 我不知道这对你来说是否可行,但是如果你恢复到旧的 2.4.6 版本的httpd,事情会重新开始吗?你是否浏览过 2.4.7 到 2.4.34 版本的发行说明,看看里面是否有什么东西会搞砸?当您在命令行运行时,您会拥有在后台运行时可能不适用的各种环境内容(例如终端)。您是否移动了 Informix 软件?默认情况下,DBD::Informix 在构建时会记录 INFORMIXDIR 的值,并使用它来定位事物。如果您移动 INFORMIXDIR,您可能会遇到问题。
  • DBD::Informix 有一个构建时环境变量,称为 DBD_INFORMIX_RELOCATABLE_INFORMIXDIR,默认情况下被视为 0/off。也许看看会有所帮助。如果它过去能够找到libifsql.so 而现在无法找到,则说明发生了一些变化——解决问题的关键是确定发生了什么变化。您最终可能不得不显示正确设置了哪些环境变量——因为很有可能其中至少有一个没有正确设置。您是否使用 CGI 或 FastCGI 或其他技术来执行 Perl 脚本?
  • 您是否更改了 Perl 的版本?应该努力研究命令行与背景的行为变化。尝试在新旧环境中运行相同的环境日志记录脚本,看看有什么不同。

标签: apache perl odbc informix


【解决方案1】:

它将不再使用我在 httpd.conf 中设置的 LD_LIBRARY_PATH 环境变量。

服务在一个全新的环境中启动,不受用户环境的任何影响(如环境变量值)。因此,所有已启用集合的信息将在服务启动期间丢失。

较新版本的 httpd 已停止在服务启动时引入用户环境。我在 /opt/rh/httpd24/service-environment 中发现了这个小简介。

grep -r "LD_LIBRARY_PATH" /opt/rh/httpd24/
/opt/rh/httpd24/enable:export LD_LIBRARY_PATH=/opt/rh/httpd24/root/usr/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

我在 /opt/rh/httpd24/enable 中添加了标准的 informix 路径。

export LD_LIBRARY_PATH=/opt/IBM/informix/lib:/opt/IBM/informix/lib/esql:/opt/rh/httpd24/root/usr/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

一切都恢复正常了。哇哦!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-20
    • 2023-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多