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

Hi Monks, I have written a perl script to access the Sybase database which works fine from the command prompt, but giving some trouble from the Apache CGI web. As a matter of fact, the same configuration works from some other machine. Does anyone has any ideas. Thu Jun 15 15:50:46 2006 error client 127.0.0.1 Can't load 'D:/tools/Perl/site/lib/auto/DBD/Sybase/Sybase.dll' for module DBD::Sybase: load_file:The specified module could not be found at D:/tools/Perl/lib/DynaLoader.pm line 206.

Replies are listed 'Best First'.
Re: DBD::Sybase error from CGI
by Joost (Canon) on Jun 15, 2006 at 20:23 UTC
      I have installed the DBD::Sybase ver 1.07 and the installation looked good. In terms of permissions, can you elaborate little bit more on that. -thanks
        I'm assuming the webserver doesn't run as the user that owns the .dll file. That's standard under unix, but I'm not so sure about windows.

        If so, it might be the case that the file is only readable to the owner, but not to any other user.

        It's been a long time since I've done anything serious with windows, and I can't figure out how to check this under windows XP using the GUI.

        Try to run this as a CGI:

        use strict; use CGI; my $c = CGI->new; print $c->header("text/plain"); my @path = split '/','D:/tools/Perl/site/lib/auto/DBD/Sybase/Sybase.dl +l'; for (0 .. $#path) { my $check = join('/',@path[0 .. $_]); print -x $check ? "can" : "can't", " execute $check\n"; print -r $check ? "can" : "can't", " read $check\n"; }
        You'll need at least read permissions, not so sure about execute permissions.

        Then again, I might be all wrong - as I said, it's been a while since I've used windows seriously.

Re: DBD::Sybase error from CGI
by mpeppler (Vicar) on Jun 16, 2006 at 06:42 UTC
    The most likely problem is that the Sybase libraries/DLLs aren't found in the apache context. This may be due to an incorrect PATH and/or SYBASE env. variable setting for the Apache process.

    I'm not a Windows person, so I really don't know how to set these correctly, but this should give you an idea.

    Michael

Re: DBD::Sybase error from CGI
by Moron (Curate) on Jun 16, 2006 at 11:05 UTC
    Apache does not permit the CGI script to use absolute paths - it will be interpreting it instead as a relative path. See http://httpd.apache.org/docs/2.2/sections.html for how to configure absolute paths for use, usually by an alias, in your script.

    Or you might consider using Apache::Sybase::CTlib to connect to Sybase instead.

    -M

    Free your mind