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

This node falls below the community's minimum standard of quality and will not be displayed.
  • Comment on code working fine in cgi-bin but not outside cgi-bin

Replies are listed 'Best First'.
Re: code working fine in cgi-bin but not outside cgi-bin
by davorg (Chancellor) on Jan 11, 2007 at 10:21 UTC

    This would appear to be a repost of a previous question. If you're going to repost a previous question (and you really shouldn't - it's far better to post an update in the previous thread) then you should, at least, include a link to the previous discussion so we can see what suggestions have already been made (and, apparently, ignored).

    --
    <http://dave.org.uk>

    "The first rule of Perl club is you do not talk about Perl club."
    -- Chip Salzenberg

Re: code working fine in cgi-bin but not outside cgi-bin
by ikegami (Patriarch) on Jan 11, 2007 at 20:27 UTC

    A common problem is assuming the current directory is the directory in which the script resides.

    Another common problem is lack of permissions due to the script running as a different user when spawned by the web server.

    The first thing you should do is check your error log for errors.

Re: code working fine in cgi-bin but not outside cgi-bin
by hesco (Deacon) on Jan 11, 2007 at 20:55 UTC
    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++; }
      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
Re: code working fine in cgi-bin but not outside cgi-bin
by idle (Friar) on Jan 11, 2007 at 10:47 UTC
    This not related to Perl itself, rather to your web-server configuration, e.g. httpd.conf.
Re: code working fine in cgi-bin but not outside cgi-bin
by siva kumar (Pilgrim) on Jan 11, 2007 at 11:11 UTC
    Can you provide the related code?