【发布时间】: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 的版本?应该努力研究命令行与背景的行为变化。尝试在新旧环境中运行相同的环境日志记录脚本,看看有什么不同。