Improve company productivity with a Business Account.Sign Up

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 228
  • Last Modified:

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($email);

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></font></p>

<p align="left">&nbsp;</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>Subject: $subject</big></font></p>
<p align="left"><font face="Arial" color="#000080"><big>Comments: $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,$comments\n";
close CSV;


#----------------------------------------------------------


sub print_error {
        my $message = shift;

        print $q->header;

        print <<HTMLCODE;
<html>
<head><title>$message</title></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>$message</strong></font></p>

<p align="left"><font face="Arial" color="#000080"><strong>Please click your browser's Back button and try again.</strong></font></p>

</body>
</html>
HTMLCODE

        exit;
}
0
rincewind666
Asked:
rincewind666
  • 2
1 Solution
 
venkateshwarrCommented:

Is it giving the correct path when you try to print out the string "$htmlpath/file.csv"??
0
 
rincewind666Author Commented:
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>&nbsp;&nbsp; <INPUT type=reset value=Reset></TD></TR>
  <TR>
    <TD></TD></TR>
  <TR>
    <TD></TD></TR>
  <TR>
    <TD></TD></TR></TABLE></P>
</BODY>
</HTML>

0
 
TintinCommented:
There's a missing > in the open

open CSV, "$htmlpath/file.csv" or die "Can not write to file.csv $!\n";

should be:

open CSV, ">$htmlpath/file.csv" or die "Can not write to file.csv $!\n";

If it works without the $htmlpath, then you might as well remove it.
0
 
rincewind666Author Commented:
Many thanks for your help.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

  • 2
Tackle projects and never again get stuck behind a technical roadblock.
Join Now