• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 1524
  • Last Modified:

Apache + cgi file, Internal server error, Premature end of scripts!

I have Apache 2.x, PHP 5.x installed in Linux server. The application has PHP files in the document root and 2 .cgi files (upload.cgi and progress.cgi) in the apache's cgi-bin directory. The upload.cgi takes care of uploading the file from the client to the server and the progress.cgi displays the progress bar of how much % of data is being transferred. So, basically the application is a mixture of PHP and Perl (since PHP doesn't handle the raw POST data)! Now, everything works fine and great!!

Problem is in the production environment. They have Apache 1.3 and PHP 5.x installed in Linux server. Small images less than say 500 KBytes works just fine. If the image is > 500 KByte, the progress bar works till 99% and upload.cgi reports "An internal server occurred". The apache error log says: "Premature end of scripts at header.cgi". This happens for 1MB image as well as 4.5MB image file but not for the < 500 KB image files!

I checked the max_upload_time, upload limit, etc., everything is okay. I wonder why this problem occurs only if the file size is bigger!

Please advise.
0
ldbkutty
Asked:
ldbkutty
  • 3
  • 2
  • 2
  • +1
1 Solution
 
Adam314Commented:
Have you looked at the error log?  What is the error reported?
0
 
ldbkuttyAuthor Commented:
"Premature end of script headers at header.cgi"
0
 
Adam314Commented:
Try putting this at the top of your script:
use CGI::Carp qw(fatalsToBrowser);
0
NFR key for Veeam Backup for Microsoft Office 365

Veeam is happy to provide a free NFR license (for 1 year, up to 10 users). This license allows for the non‑production use of Veeam Backup for Microsoft Office 365 in your home lab without any feature limitations.

 
ahoffmannCommented:
when/where is your header.cgi used?
0
 
samriCommented:
hi ldbkutty,

the problem appears when the file size exceed 500kb.  I had the impression that this is something to do with the PHP configuration, or the script setting, or maybe the server configuration -- check for how the data is transferred to the server -- either via POST of GET method.

you may also want to look at the server error_log file for some indication of the error.  if this is something to do with size limit, then obviously the error would register there.

Some other discussion that may be useful to get some hint -- there was just too much information posted that I could not paraphrase -- http://gallery.menalto.com/node/14870


cheers.
0
 
ldbkuttyAuthor Commented:
Problem was that I was using Windows editor and uploaded the changes of .cgi in Linux server!! I read somewhere to open and save the file in "vi" deleting the spaces in the first lines.

Everything works fine now! Thanks for your time.
0
 
samriCommented:
aha.... that must be something to do with how dos/windows and unix did to the EOL (end of line) marker.  Somehow, transferring file between these two systems may give (myself) nightmare sometime.

I think there is a command called dos2unix and unix2dos that you could use to convert the file --- ie, if you edit the file in windows, and ftp that to unix, try running "dos2unix file.cgi", vice-versa.

cheers
0
 
Adam314Commented:
Yes, the problem was caused by line endings.  Windows will use CR-LF as line ending, while unix uses only LF.
So your first line:
#!/usr/bin/perl<CR><LF>

Since unix considered LF to be the end of line, it was looking for /usr/bin/perl<CR> to execute your script, which doesn't exist.

If you upload the files using FTP in ASCII mode, that will solve the problem.  Or if you can't do that, if you put a space at the end of the line, that will solve the problem also (well, it won't get rid of the windows line endings, but unix will at least use the right program), like so:
#!/usr/bin/perl <space>

0

Featured Post

Free Tool: IP Lookup

Get more info about an IP address or domain name, such as organization, abuse contacts and geolocation.

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.

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