perl-modperl mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From mehryar <>
Subject Re: use lib error
Date Fri, 09 Dec 2016 16:28:31 GMT

Thanks Adam, I think you were right.
There was a small difference in the simplified example I wrote below to 
the actual script I was running. The actual script actually had the path:
use lib '../../lib'; # which was correct relative to the script.
But when I switched this to:
use lib '../lib'; # this did not cause the error anymore, even though the 
path was incorrect relative to the script.

And I think what was happening was that you're right the current working
directory was being set to /  and ../../lib was an invalid path somehow.

Anyway I adopted your solution and just removed the use libs in my scripts
since the PerlSwitch -I/{full path to lib} allows the modules to be found.


On Thu, 8 Dec 2016, Adam Prime wrote:

> I don't think Modperl::Registry sets the current working directory of of
> the process when it runs your script, so that might be why it's having
> problems. You can try RegistryPrefork instead, if you're running under
> the prefork MPM.  If not, then your script will need to be updated to
> assumed that the current working directory is /
> I could of course be wrong, but this is something to try at least.
> Adam
> On 12/08/2016 05:17 PM, mehryar wrote:
>> Hi folks,
>> A noobie question here:
>> I have a plain simple cgi script in a directory configured for
>> Modperl::Registry:
>> --------------------
>> #!/usr/local/bin/perl
>> use strict;
>> use warnings
>> use lib '../lib';
>> use MyApp;
>> print "Content-type: text/html\n\n";
>> print "hello\n";
>> ---------------------
>> This script runs correctly under mod_cgi (without mod_perl), implying
>> that perl is able to locate through use lib '../lib';
>> Now under mod_perl with PerlSwitches -I/Users/mehryar/Sites/lib
>> the script runs correctly as well - but only if I comment out the
>> 'use lib...' line. Implying again that mod_perl was able to locate
>> through the -I/Users/mehryar/Sites/lib.
>> But what I don't understand is why it fails if the use lib '../lib'; line
>> is present in the script?
>> I get the following error:
>> Can't locate   Permission denied at
>> /Users/mehryar/Sites/cgi/test.cgi
>> (This is on my Mac mod_perl2.0.10/Apache2.4.23)
>> Reading the docs on how @INC is modified is getting me nowhere.
>> cheers,
>> -Mehryar

View raw message