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

It works on command line

$ ./test.cgi name=testname

output below

Content-Type: text/html; charset=ISO-8859-1 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" lang="en-US" xml:lang="en-US"> <head> <title>test</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> </head> <body>

Parameters


name=testname

$ cat dbase.txt

Name:testname,Surname:

doesn't work when going thru browser

file permission = ls -l dbase.txt -rwxrwxrwx 1 nathan nathan 23 Sep 27 12:33 dbase.txt

$ cat test.cgi

#!/usr/bin/perl # test.cgi use CGI qw /:standard/; use CGI::Carp qw(warningsToBrowser fatalsToBrowser); use strict; my $db='/var/www/example/cgi-bin/dbase.txt'; print header,start_html('test'); print h3("Parameters"); my $name = param("name"); my $sname = param("sname"); open (FILE, ">>$db") or print STDERR "[$0] Could not open file! $!"; print (FILE "Name:$name,Surname:$sname\n"); close (FILE); print "<br>name=$name.. surname=$sname>br>"; print end_html;

Replies are listed 'Best First'.
Re: cgi won't write to file thru browser
by Corion (Patriarch) on Sep 27, 2015 at 11:53 UTC

    So, what is the output of the program when run through the browser?

    Also, what is the output in the web server error log? You print to it in the case of an error, but maybe you want to also signal this condition to the browser, even if only for debugging?

    open (FILE, ">>$db") or print STDERR "[$0] Could not open file! $!";

    ... should either be

    open (FILE, ">>$db") or die "[$0] Could not open file! $!";

    or should be something like:

    if( open (FILE, ">>$db")) { print (FILE "Name:$name,Surname:$sname\n"); close (FILE); } else { print STDERR "[$0] Could not open file '$db': $!"; print "<b>Sorry, an error happened: $!"; };

      Parameters name=Simon.. surname=>br>

        SORTEd IT!!!!

        I checked back at the error.log for apache2 and quickly realised my Issue. :)

        THANKS Perl Monks, Monastery rocks!