How are you upgrading from SPARC to x86?It seems like you copied some libraries from SPARC to x86 which will not work.You need to do a fresh install of 7.3.1 on x86 and move any movable customizations over.
... we've moved iw-home/iw-perl/site/lib perl modules including DBI from the old server to the new server....
You moved SPARC binaries (shared libraries, mentioned in the error) to an x86 platform. That won't fly. You need to remove the files you moved and install DBI by hand. If you go into the site/lib directory, type file path/to/some.soyou should see a difference between the SPARC and the x86 shared libraries. This should produce the wrong answer:file /Interwoven/TeamSite/iw-perl/site/lib/auto/DBI/DBI.so
IWHOME/iw-perl/vendor/lib
There should be a DBI module in IWHOME/iw-perl/vendor/lib which should work.I believe you can utilize basic ODBC directives with the basic DBI module without having to install (compile/install) any other DBI or DBD modules.If you need to call DB-specific methods, then you need the appropriate DBD module, and then you'll need to download / compile / install it -- for the most part you should look carefully at the README documents associated with those modules.You can also try using DBI:urePerl (which I believe comes with the iwperl distribution) - however, I'm not sure that helps you any if you need DB-specific methods from a DB-specific DBD module.
IIRC, on Windows DBI came preinstalled with TS, however Linux it was not. Probably due to device drivers.
The files do exist. The same script when run through the command line will work but when run as an <inline /> does not work.
Tim - that's a classic, and you've been around long enough to know that.Inline scripts do not have the same environment variables accessible to them as when running from the command line - therefore you need to compare the list and values of environment variables in both situations to figure out what you need to hard-code (within a BEGIN block) in the script.For the CGI - you either need to hard code the information (BEGIN block) or pass-it-through (modification of the iw-webd/conf/iwwebd.conf.template)
Will the "modification of the iw-webd/conf/iwwebd.conf.template" solution solve the issue for just CGI scripts?
How would I solve it for <inline/> scripts globally?
Yea this will not help in with the inlines. The only way to solve this globally would be to use Perl Modules for the query and include it there. But if you are calling db->open directly, then you will be making a lot of changes.
@INC is for Perl modules - the problem you're having (or so you indicated) was with shared libraries not being found - those are usually on something like a LIBPATH environment variable - again - look for the posts regarding the use of BEGIN blocks and go through the exercise of dumping them out from both the command line and the script - and compare / contrast the information.
I had done this already. Adding the following did not fix the issue for the inline commands. Again, I'm having the same issue with CGI.BEGIN {$ENV{"LD_LIBRARY_PATH"} = "/usr/local/easysoft...........$ENV{"PATH"} = "/Interwoven/TeamSite/iw-perl/.........}
use CGI::Carp qw(fatalsToBrowser);
[...]The core of the error is."install_driver(ODBC) failed: Can't load '/Interwoven/TeamSite/iw-perl/site/lib/auto/DBD/ODBC/ODBC.so' for module DBD:DBC:ld.so.1: perl: fatal: libodbc.so.1: open failed: No such file or directory at /Interwoven/TeamSite/iw-perl/lib/DynaLoader.pmline 229. at (eval 121) line 3 Compilation failed in require at (eval 121) line 3. Perhaps a required shared library or dll isn't installed where expected at...." the rest is script specific.
ls -l /Interwoven/TeamSite/iw-perl/site/lib/auto/DBD/ODBC/ODBC.sofile /Interwoven/TeamSite/iw-perl/site/lib/auto/DBD/ODBC/ODBC.soldd /Interwoven/TeamSite/iw-perl/site/lib/auto/DBD/ODBC/ODBC.so
Before following nipper's suggestion - which theoretically could break something else - can you please do the following and post the results:ls -l /Interwoven/TeamSite/iw-perl/site/lib/auto/DBD/ODBC/ODBC.sofile /Interwoven/TeamSite/iw-perl/site/lib/auto/DBD/ODBC/ODBC.soldd /Interwoven/TeamSite/iw-perl/site/lib/auto/DBD/ODBC/ODBC.so
Here you go...-r-xr-xr-x 1 root root 147300 Jan 11 17:30 /Interwoven/TeamSite/iw-perl/site/lib/auto/DBD/ODBC/ODBC.so*/Interwoven/TeamSite/iw-perl/site/lib/auto/DBD/ODBC/ODBC.so: ELF 32-bit LSB dynamic lib 80386 Version 1, dynamically linked, not stripped, no debugging information availablelibodbc.so.1 => /usr/local/easysoft/unixODBC/lib/libodbc.so.1libc.so.1 => /lib/libc.so.1libdl.so.1 => /lib/libdl.so.1libthread.so.1 => /lib/libthread.so.1libm.so.2 => /lib/libm.so.2
Is this a 32-bit or 64-bit system that you're on? That might play a part in the issue. Also - check the permissions and such (ls -l ...; file ...) on the other libraries.I'm just taking guesses - not sure exactly where this might lead to, if anywhere - but it's worth eliminating variables while trying to figure out what's wrong.