litarena has asked for the wisdom of the Perl Monks concerning the following question:

Why is libclntsh.so.10.1 causing DynaLoader.pm line 230 permission denied errors to happen, when attempting to load Oracle.so?

Below is line 230 from Dynaloader.pm
my $libref = dl_load_file($file, $module->dl_load_flags) or croak("Can't load '$file' for module $module: ".dl_error());




A little bit of background to the problem
Having installed DBD::Oracle my database connect is failing with Can't load Oracle.so
ld.so.1 fatal error libclntsh.so.10.1 permission denied

I've tried reinstalling DBD::Oracle. CPAN doesn't seem that geared up for reinstalling things. (It's a bit
messy.) And it didn't help. The error is still exactly the same.


Not surprisingly running perl cpan as root so the file
/usr/perl5/site_perl/5.8.4/i86pc-solaris-64int/auto/DBD/Oracle/Oracle.so
is owned root:root as are all my other cpan modules.

Thu Jul 21 13:14:45 2011 error client 192.168.1.101
\tinstall_driver(Oracle) failed: Can't load '/usr/perl5/site_perl/5.8.4/i86pc-solaris-64int/auto/DBD/Oracle/Oracle.so' for module DBD::Oracle: ld.so.1: perl: fatal: /export/home/oracle/oracle/product/10.2.0/db_1/lib/libclntsh.so.10.1:
Permission denied at /usr/perl5/5.8.4/lib/i86pc-solaris-64int/DynaLoader.pm line 230., referer: http://192.168.1.130/Wood-Recycling/add-new-customer.html

It's not the file itself because I've overwritten it with another file of the same name and the error is the same. It's not the directory that it's in because I have another localzone with the same file in it and the same file and directory permissions and that one works just fine!


update


Thanks for the suggestions, guys.
The simplest workaround for the moment is to run apache with the group oinstall
  • Comment on (libclntsh.so.10.1 causing) DynaLoader.pm line 230 my perl module, Oracle.so, is permission denied

Replies are listed 'Best First'.
Re: (libclntsh.so.10.1 causing) DynaLoader.pm line 230 my perl module, Oracle.so, is permission denied
by Anonymous Monk on Jul 29, 2011 at 09:27 UTC
    you need to examine all .so files involved with ldd and check permissions with ls -loanh -- permission denied is not a special message generated by Dynaloader, its the value of errno
Re: (libclntsh.so.10.1 causing) DynaLoader.pm line 230 my perl module, Oracle.so, is permission denied
by Anonymous Monk on Jul 29, 2011 at 12:05 UTC
    On a Unix-like system, don't just look at permission bits. You need to look at ACLs too.