Re: Leopard, Apache and CGI Uploads

[email protected]
Newsgroups perl.macosx
Message-ID <[email protected]>
Hello Bryan,

On Apr 24, 2008, at 10:59 PM, [email protected] wrote:
> I have a Perl file upload script I'd been using for years under  
> Apache 1 in Tiger. I haven't modified it in ages. No mod_perl, just  
> CGI.pm and the default Perl installation. It's always worked fine  
> for files of any size (some as many as a gigabyte and taking more  
> than an hour to upload), but since upgrading to Leopard, with its  
> Apache2 nonsense,

Um, apache2 rocks. It has a much better configuration layout,  
particularly for virtual hosts, and is a more secure web server. Once   
you get used to it you'll agree.

> the script fails on large files -- anything over a megabyte -- with  
> this being output to the browser:
>
> "CGI.pm: Server closed socket during multipart read (client  
> aborted?).".
>
> This is the only error message logged, too. I've tested this with  
> multiple clients on different operating systems and it's the same  
> every time, unless the file's smaller than 1MB, in which case the  
> script executes as it should. I added a debugging line to the upload  
> hook that runs when I first create my CGI query object, and it  
> reports the bytes increasing up to a point, after which it keeps  
> logging these messages but the number of bytes stays static. It's  
> never the exact same number but the files always seem to fail above  
> 1 megabyte, with about 1.4 being the upper limit I've seen so far.
>
> Any ideas? Thanks

Well I know that CGI.pm has tools to limit the size of uploads, or  
more specifically tools for controlling uploaded files as they get  
spooled to disk, but it appears that you did not change those settings  
so I am not sure if that is your problem or not. Here are some things  
you can add to your perl script to get more information:

Use Carp, diagnostics, and warnings, if you haven't already:

use warnings
use diagnostics
use CGI::Carp 'fatalsToBrowser'

That last use directive, (the one for CGI::Carp), will print warnings  
to your browser which may help if you chose to diagnose the problem  
with a browser. You'd probably want to turn that off once the problem  
is solved, it reveals juicy information about the cgi environment.

You can change the type and amount of messages your error log receives  
in the httpd.conf file for your specific domain - I think the default  
is "warn", but you can set higher levels which might give you some  
more info, look for this stanza:

         ErrorLog /var/log/apache2/error.log

         # Possible values include: debug, info, notice, warn, error,  
crit,
         # alert, emerg.
         LogLevel warn

Set it to info or debug for more info on errors. apache2 does not use  
httpd.conf anymore, at least on other operating systems, but Apple has  
decided in their infinite wisdom to fork apache2 and they bundle  
configuration in httpd.conf. Bad Apple. So you will have to look in / 
etc/apachce2/httpd.conf to find if there are any settings there that  
are limiting your uploads, though a cursory check of my httpd.conf  
file under Leopard shows nothing that might point to limits on  
uploads, but as I mentioned, Apple takes liberties with apache so you  
never know. :)

Hope that helps,
		
	Jeremiah
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.