Hi, > Note: questions of this nature you might want to send to > [EMAIL PROTECTED] as that is a list specifically about cgi, though > in most cases the beginners list will be able to help you too. Thanks I will check it out >(more below)> > Vargas Media wrote: > > Hi, > > I have been studying with the O'Reilly book "CGI Programming with Perl" - > > Chapter 5 page 99 > > Below is an example of a upload.cgi that utilizes CGI.pm > > I am not able to get it to work correctly yet and I am trying to find out if > > it is the directory I am trying to load the file to or a progammatical > > error. The html is at: > > http://www.vargasmedia.com/upload.htm > > I have been using > > http://www.vargasmedia.com/cgi-bin/env_var.cgi > > to help me get the information I need to upload files using the correct > > path. > > Is that a good way to go about it and if so what Environment Variable should > > I be looking at to return a path I can use... > > DOCUMENT_ROOT > > > I don't quite understand what you are asking here? Can you be more > specific?? I have a CGI script that is at> http://www.vargasmedia.com/cgi-bin/env_var.cgi It returns information about my server and I am using the information in the Environtment Variable "Document Root" to grab the path name> " /www/vargasmedia/uploads/"; > > > > I have an empty folder on my server under www that is called "uploads" and > > wanted to upload files there. > > Here is the code from the Book "CGI Programming with Perl - it is in Chapter > > 5 - page 99 > > Is this the code you are using, in env_var.cgi?? No I am using the upload.cgi script below the env_var.cgi script I was just using to give details about my server and where I should set the path for: "use constant UPLOAD_DIR" > > > > -PS:btw- What is the CHMOD setting that I should be using with this CGI and > > "uploads" directory? > > two things need to be addressed here, both the ownership and the > permissions, and they are related. The web server runs as a particular > user, example the "apache" user on some systems with apache, and that > user has its own group, example "httpd" on some systems (many others are > nobody/nobody, etc.). The user who is "writing" the file to the disk > (aka the web server user) must have write permission to the folder this > is usually either accomplished by setting the ownership of the directory > to the user and then providing the user write ability, or setting the > group of the directory to one of the groups that the web server runs as > and then setting group writeable permissions on that directory. If you > are on unix consult -> man chown and -> man chmod for more about these > two topics, on windows I can't help you sorry. > What is the easiest way to access man chown. As I mentioned some of this is new territory - I apologize if the questions sound to obvious.
> A cursory (read: 30 second) look over your code didn't show any glaring > problems. Is there an error given? What shows up in the error log for > the web server and/or what is printed to the browser? More specific info > might better help us diagnose the problems you are having. I attempted > to upload a file and got a 500 error which could be a lot of things but > should produce an error output in the error log. I am getting from the Browser and "Internal Server Error" "The Server encountered and internal error or misconfiguration ans was unable to complete your request...." etc I believe my problem lies in 2 areas my CHMOD setting and possible the directory where I am trying to upload the file. I am reposting the code below. Thanks! Steve ##################################################################### #!/usr/bin/perl -wT use strict; use CGI; use Fcntl qw( :DEFAULT :flock ); # use constant UPLOAD_DIR => "/usr/local/bin"; use constant UPLOAD_DIR => " /www/vargasmedia/uploads/"; use constant BUFFER_SIZE =>16_384; use constant MAX_FILE_SIZE => 100 * 1_048_576; use constant MAX_DIR_SIZE => 100 * 1_048_576; use constant MAX_OPEN_TRIES =>100; $CGI::DISABLE_UPLOADS = 0; $CGI::POST_MAX = MAX_FILE_SIZE; my $q = new CGI; $q->cgi_error and error( $q, "Error transferring file: ". $q->cgi_error ); my $file = $q->param( "file" ) || error( $q, "No file recieved." ); my $filename = $q->param( "filename" ) || error( $q, "No filename entered." ); my $fh = $q->upload( $file ); my $buffer = ""; if ( dir_size( UPLOAD_DIR ) + $ENV{CONTENT_LENGTH} > MAX_DIR_SIZE ) { error( $q, "Upload directory is full." ); } # Convert odd ball characters to underscore $filename =~ s/[^\w.-]/_/g; if ( $filename =~ /^(\w[\w.-]*)/ ) { $filename = $1; } else { error( $q, "Invalid file name; files must start with a letter or number." ); } # open output file, making sure the file name is unique until ( sysopen OUTPUT, UPLOAD_DIR . $filename, O_CREAT | O_EXCL ) { $filename =~ s/(\d*)(\.\w+)$/($1||0) + 1 . $2/e; $1 >= MAX_OPEN_TRIES and error( $q, "Unable to save your file." ); } # This is neccessary for non-Unix systems does nothing on UNIX binmode $fh; binmode OUTPUT; # write contents to output file while ( read($fh, $buffer, BUFFER_SIZE ) ) { print OUTPUT $buffer; } close OUTPUT; sub dir_size { my $dir = shift; my $dir_size = 0; # loop through files and sume the sizes; doesn't decend down subdirs opendir DIR, $dir or die "Unable to open $dir: $!"; while ( readdir DIR ) { $dir_size += -s "$dir/$_"; } return $dir_size; } sub error { my( $q, $reason ) = @_; print $q->header( "text/html" ), $q->start_html( "Error" ), $q->h1( "Error" ), $q->p( "Your upload was not processed because the following error", "occured: "), $q->p( $q->i( $reason )), $q->end_html; exit; } ######################END############################################ -- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]