http://qs1969.pair.com?node_id=245315


in reply to Writing Files Outside of My CGI-BIN

On any modern OS, your CGI program will run with a certain user ID. Just make sure that the location you want to write to is writeable by the effective user ID the script is running as. Without knowing anything about your operating system, it's hard to say exactly how to do this. On a Unix-like system, assuming you're using a plain Apache installation, the default user is "nobody", so something like this would work (for some definition of "work"):

# chown nobody.nobody /path/where/cgi/can/write # chmod 0755 /path/where/cgi/can/write
(you would have to be the superuser to use exactly these commands, and it might not work if you have a non-default Apache installation).

But you really should consult the documentation on file permissions for your operating system.

If not P, what? Q maybe?
"Sidney Morgenbesser"

Replies are listed 'Best First'.
Re: Re: Writing Files Outside of My CGI-BIN
by tachyon (Chancellor) on Mar 23, 2003 at 23:22 UTC

    Actually the default user now tends to be 'apache' but of course the logic is correct. $! will reveal the error if it fails (usually Permission Denied).

    #!/usr/bin/perl my $file = '/path/to/some/file'; open FILE, ">$file" or die_nice( "Could not open $file, Reason $!\n" ) +; print FILE "Woo-hoo!"; close FILE; print header(), "<h2>Wrote $file OK</h2>"; sub die_nice( print header(), shift; exit } sub header { return "Content-type: text/html\n\n" }
    cheers

    tachyon

    s&&rsenoyhcatreve&&&s&n.+t&"$'$`$\"$\&"&ee&&y&srve&&d&&print