rincewind666
asked on
Can't correct error "Can not write to file.csv No such file or directory". HELP PLEASE!
I am getting the following error:
Software error:
Can not write to file.csv No such file or directory
I have tried everything I can think of.
Using path: "$htmlpath/file.csv" (where htmlpath = '/home/chrono/public_html' ):
The same error appears if I upload a blank text file called "file.csv" or not or chmod this "file.csv" to 777 or not.
Using no path (just "file.csv"):
If I upload a blank file.csv into the cgi-bin, it seems to work (no error message) but it refuses to download and seems to be empty (0k).
It may be a simple error but I can't see it. Your help would be greatly appreciated.
#!/usr/local/bin/perl
use strict;
use CGI;
use CGI::Carp qw(fatalsToBrowser);
use lib "/your/modules/path"; # Location of the Email::Valid module
use Email::Valid;
my $mail_prog = '/usr/sbin/sendmail' ;
my $your_email = 'admin@chronosystems.com';
my $your_comments = "Thank you for using our online form. We will reply as soon as we can.";
my $htmlpath = '/home/chrono/public_html' ;
my $q = new CGI;
my $name = $q->param('name');
my $email = $q->param('email');
my $subject = $q->param('subject');
my $comments = $q->param('comments');
print_error("You must enter your name") unless $name;
print_error("You must enter your email address") unless $email;
print_error("You must enter a subject") unless $subject;
print_error("You must enter your comments") unless $comments;
print_error("Your email address is invalid") unless Email::Valid->address($ema il);
open MAIL, "|$mail_prog -oi -t" or die "Can not start $mail_prog $!\n";
print MAIL <<EOF;
To: $email
Reply-to: $your_email
From: $your_email
Subject: Thank You
$your_email
$your_comments
EOF
close MAIL;
open MAIL, "|$mail_prog -oi -t" or die "Can not start $mail_prog $!\n";
print MAIL <<EOF;
To: $email
Reply-to: $email
From: $email
Subject: reply from our form
$name
$email
$subject
$comments
EOF
close MAIL;
print $q->header;
print <<HTMLCODE;
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
<title>Thank You</title>
</head>
<body>
<p align="center"><font color="#ffffff" face="Arial"><big><strong> Thank You, $name!</strong></big></fon t></p>
<p align="left"> </p>
<hr>
<p align="left"><font face="Arial" color="#000080"><big>You entered the following:</big></font></p >
<p align="left"><font face="Arial" color="#000080"><big>Name: $name</big></font></p>
<p align="left"><font face="Arial" color="#000080"><big>Email : $email</big></font></p>
<p align="left"><font face="Arial" color="#000080"><big>Subje ct: $subject</big></font></p>
<p align="left"><font face="Arial" color="#000080"><big>Comme nts: $comments </big></font></p>
</body>
</html>
HTMLCODE
#Print to file
open CSV, "$htmlpath/file.csv" or die "Can not write to file.csv $!\n";
print CSV "$name,$email,$subject,$co mments\n";
close CSV;
#------------------------- ---------- ---------- ---------- ---
sub print_error {
my $message = shift;
print $q->header;
print <<HTMLCODE;
<html>
<head><title>$message</tit le></head>
<body>
<p align="center"><font color="#ffffff" face="Arial"><big><strong> Processing Error</strong></big></font ></p>
<p align="left"><font face="Arial" color="#000080"><strong>$m essage</st rong></fon t></p>
<p align="left"><font face="Arial" color="#000080"><strong>Pl ease click your browser's Back button and try again.</strong></font></p>
</body>
</html>
HTMLCODE
exit;
}
Software error:
Can not write to file.csv No such file or directory
I have tried everything I can think of.
Using path: "$htmlpath/file.csv" (where htmlpath = '/home/chrono/public_html'
The same error appears if I upload a blank text file called "file.csv" or not or chmod this "file.csv" to 777 or not.
Using no path (just "file.csv"):
If I upload a blank file.csv into the cgi-bin, it seems to work (no error message) but it refuses to download and seems to be empty (0k).
It may be a simple error but I can't see it. Your help would be greatly appreciated.
#!/usr/local/bin/perl
use strict;
use CGI;
use CGI::Carp qw(fatalsToBrowser);
use lib "/your/modules/path"; # Location of the Email::Valid module
use Email::Valid;
my $mail_prog = '/usr/sbin/sendmail' ;
my $your_email = 'admin@chronosystems.com';
my $your_comments = "Thank you for using our online form. We will reply as soon as we can.";
my $htmlpath = '/home/chrono/public_html'
my $q = new CGI;
my $name = $q->param('name');
my $email = $q->param('email');
my $subject = $q->param('subject');
my $comments = $q->param('comments');
print_error("You must enter your name") unless $name;
print_error("You must enter your email address") unless $email;
print_error("You must enter a subject") unless $subject;
print_error("You must enter your comments") unless $comments;
print_error("Your email address is invalid") unless Email::Valid->address($ema
open MAIL, "|$mail_prog -oi -t" or die "Can not start $mail_prog $!\n";
print MAIL <<EOF;
To: $email
Reply-to: $your_email
From: $your_email
Subject: Thank You
$your_email
$your_comments
EOF
close MAIL;
open MAIL, "|$mail_prog -oi -t" or die "Can not start $mail_prog $!\n";
print MAIL <<EOF;
To: $email
Reply-to: $email
From: $email
Subject: reply from our form
$name
$subject
$comments
EOF
close MAIL;
print $q->header;
print <<HTMLCODE;
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head>
<title>Thank You</title>
</head>
<body>
<p align="center"><font color="#ffffff" face="Arial"><big><strong>
<p align="left"> </p>
<hr>
<p align="left"><font face="Arial" color="#000080"><big>You entered the following:</big></font></p
<p align="left"><font face="Arial" color="#000080"><big>Name:
<p align="left"><font face="Arial" color="#000080"><big>Email
<p align="left"><font face="Arial" color="#000080"><big>Subje
<p align="left"><font face="Arial" color="#000080"><big>Comme
</body>
</html>
HTMLCODE
#Print to file
open CSV, "$htmlpath/file.csv" or die "Can not write to file.csv $!\n";
print CSV "$name,$email,$subject,$co
close CSV;
#-------------------------
sub print_error {
my $message = shift;
print $q->header;
print <<HTMLCODE;
<html>
<head><title>$message</tit
<body>
<p align="center"><font color="#ffffff" face="Arial"><big><strong>
<p align="left"><font face="Arial" color="#000080"><strong>$m
<p align="left"><font face="Arial" color="#000080"><strong>Pl
</body>
</html>
HTMLCODE
exit;
}
ASKER
It is the correct path. It works with other cgi scripts I use. Also I've tried it without the variable: '/home/chrono/public_html/ file.csv' and it still doesn't work. Thanks for the help.
The perl code is above. I also give my html code for the initial page below. Perhaps you can try it out:
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
<FORM ACTION="http://chronosystems.com/cgi-bin/test/form.cgi" METHOD="POST">
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
<P>
<TABLE borderColor=#000000 cellSpacing=1 cellPadding=1 width="75%"
bgColor=#ffffff background=000000>
<TR>
<TD>Name: <INPUT name=name></TD></TR>
<TR>
<TD>Email: <INPUT name=email></TD></TR>
<TR>
<TD>Subject: <INPUT name=subject></TD></TR>
<TR>
<TD>Comments:</TD></TR>
<TR>
<TD><TEXTAREA name=comments rows=5 cols=30></TEXTAREA></TD></ TR>
<TR>
<TD><INPUT type=submit value=Submit> <INPUT type=reset value=Reset></TD></TR>
<TR>
<TD></TD></TR>
<TR>
<TD></TD></TR>
<TR>
<TD></TD></TR></TABLE></P>
</BODY>
</HTML>
The perl code is above. I also give my html code for the initial page below. Perhaps you can try it out:
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
<FORM ACTION="http://chronosystems.com/cgi-bin/test/form.cgi" METHOD="POST">
<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>
<BODY>
<P>
<TABLE borderColor=#000000 cellSpacing=1 cellPadding=1 width="75%"
bgColor=#ffffff background=000000>
<TR>
<TD>Name: <INPUT name=name></TD></TR>
<TR>
<TD>Email: <INPUT name=email></TD></TR>
<TR>
<TD>Subject: <INPUT name=subject></TD></TR>
<TR>
<TD>Comments:</TD></TR>
<TR>
<TD><TEXTAREA name=comments rows=5 cols=30></TEXTAREA></TD></
<TR>
<TD><INPUT type=submit value=Submit> <INPUT type=reset value=Reset></TD></TR>
<TR>
<TD></TD></TR>
<TR>
<TD></TD></TR>
<TR>
<TD></TD></TR></TABLE></P>
</BODY>
</HTML>
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
Many thanks for your help.
Is it giving the correct path when you try to print out the string "$htmlpath/file.csv"??