in reply to opening filehandles, creating files

Make sure that the directory you're writing to already exists, or create it using mkdir. die "Directory is missing" unless ( -d '/home/client/www/data_dir' );

Also note that if your web server is running chrooted, or mounts this same filesystem on another host, the directory path visible to your scripts might be different than the one you see when you log in to your shell or FTP account.

Replies are listed 'Best First'.
Re: Re: opening filehandles, creating files
by madaket (Novice) on Sep 07, 2003 at 21:02 UTC

    simonm,

    The directory exists, but the perl program can not open the file (or create it) -- "no such file or directory"

    Another strange thing about this is that I can read and write to files that already exist, but I'm not able to create a new file or write to it.

    Thanks for your suggestion -- I put it in the script.

      If you are creating the file from inside FormMail.pl and you are trying to access FormMail.pl as a CGI script then you have to:
      1. find out what user the web server runs as
      2. become root
      3. chown the directory in question to that user
      4. chmod the directory accordingly (755 should do it)
      However, the error i was expecting was Permission denied instead of no such file or directory. One thing i always try is to see if that path really exists.
      ls /home/client/www/data_dir
      If it doesn't exist, problem solved. But if it does, then the error you have doesn't make sense. Perl will create the file if it is not found as long as the user running the script has permission. And please heed merlyn's advice and use NSM's FormMail instead (if you already aren't, of course ;)).

      jeffa

      L-LL-L--L-LL-L--L-LL-L--
      -R--R-RR-R--R-RR-R--R-RR
      B--B--B--B--B--B--B--B--
      H---H---H---H---H---H---
      (the triplet paradiddle with high-hat)