in reply to code working fine in cgi-bin but not outside cgi-bin

That is a security feature, not a bug.

Apache requires that you add a SetHandler cgi-script to any directory that you intend apache be able to execute a cgi script, whether perl or otherwise. Apache provides for other Handlers, as well. For your version of apache, you'll want to read this. You'll want to add a ScriptAlias and either a <Directory or a <Location stanza to your apache configuration to control how this works.

This permits a root administrator to extend the ability to install scripts to some users (with write permisions in the cgi-bin directory, or other directories which have been properly configured), without letting every user with shell access and a public_html directory in their home directory, start permitting web enabled system calls and other script enabled actions through a browser.

An html file in an unenabled directory can access an executable script in your cgi-bin by defining its url as the action="" component of a <form tag, or the src="" element of an <img tag.

-- Hugh

if( $lal && $lol ) { $life++; }

Replies are listed 'Best First'.
Re^2: code working fine in cgi-bin but not outside cgi-bin
by anirudh_sml (Novice) on Jan 17, 2007 at 13:36 UTC
    Deer Monks
    Thanks for your valuable advices as with your help i had solved this problem and it is working fine in Mason .I am tell you all the solution so if in future any one get it he should be refered on this code.
    I am using Mason perl and Apache 1.3
    <%init> my $params =$r->param; my $upload_dir = "Filename where you want to store file "; my $filename = $params->{'file'}; my $email_add =$params->{'email'}; my $file_contents; my $upload = $r->upload; my $upload_fh = $upload->fh; open (FH, ">$upload_dir/$email_add.$filename"); binmode($upload_fh); while(<$upload_fh>) { $file_contents .= $_; } close($upload_fh); print FH $file_contents; close(FH); </%init>
    This work fine on mason madules.
    Thanks monks for your help