Gunnar Hjalmarsson wrote:
Stanisław T. Findeisen wrote:
I am trying to require() a file using its absolute name. In command line mode everything works fine, but not in Apache:

[Fri Feb 27 17:45:07 2009] [error] Can't locate /home/stf/public_html/test/arcv/public_html/../common.pl in @INC (@INC contains: /usr/lib/perl5/site_perl/5.8.8/i386-linux-thread-multi

<snip>

/usr/lib/perl5/5.8.8 . /etc/httpd) at
-----------------------^

How can I require() a file when using Perl in CGI mode? Do I have to modify @INC?

Based on your reply (to an answer that I not saw) it seems like giving the web server read access to common.pl solved your problem. Together with the fact that the current directory is included in @INC, it indicates that you are not running the script under mod_perl.

I guess I am using mod_perl:

Guess?? You really, really ought to know! What happens if you add this line to the script:

    print "Not mod_perl\n" unless $ENV{MOD_PERL};

Nothing is being printed. :-) I am having taint mode commented out in my /etc/httpd/conf.d/perl.conf file:

# Uncomment this line to enable taint checking globally.  When Perl is
# running in taint mode various checks are performed to reduce the
# risk of insecure data being passed to a subshell or being used to
# modify the filesystem.  Unfortunately many Perl modules are not
# taint-safe, so you should exercise care before enabling it on a
# production server.
#
#PerlSwitches -T

and that's why I am having . included in @INC, I guess.

STF

=======================================================================
http://eisenbits.homelinux.net/~stf/ . My PGP key fingerprint is:
9D25 3D89 75F1 DF1D F434  25D7 E87F A1B9 B80F 8062
=======================================================================

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to