Solved

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

Posted on 2007-03-28
8
1,503 Views
Last Modified: 2013-12-25
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
Comment
Question by:ldbkutty
  • 3
  • 2
  • 2
  • +1
8 Comments
 
LVL 39

Expert Comment

by:Adam314
Comment Utility
Have you looked at the error log?  What is the error reported?
0
 
LVL 32

Author Comment

by:ldbkutty
Comment Utility
"Premature end of script headers at header.cgi"
0
 
LVL 39

Expert Comment

by:Adam314
Comment Utility
Try putting this at the top of your script:
use CGI::Carp qw(fatalsToBrowser);
0
 
LVL 51

Expert Comment

by:ahoffmann
Comment Utility
when/where is your header.cgi used?
0
Get up to 2TB FREE CLOUD per backup license!

An exclusive Black Friday offer just for Expert Exchange audience! Buy any of our top-rated backup solutions & get up to 2TB free cloud per system! Perform local & cloud backup in the same step, and restore instantly—anytime, anywhere. Grab this deal now before it disappears!

 
LVL 15

Expert Comment

by:samri
Comment Utility
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
 
LVL 32

Accepted Solution

by:
ldbkutty earned 500 total points
Comment Utility
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
 
LVL 15

Expert Comment

by:samri
Comment Utility
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
 
LVL 39

Expert Comment

by:Adam314
Comment Utility
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

Top 6 Sources for Identifying Threat Actor TTPs

Understanding your enemy is essential. These six sources will help you identify the most popular threat actor tactics, techniques, and procedures (TTPs).

Join & Write a Comment

There are many situations when we need to display the data in sorted order. For example: Student details by name or by rank or by total marks etc. If you are working on data driven based projects then you will use sorting techniques very frequently.…
This article is meant to give a basic understanding of how to use R Sweave as a way to merge LaTeX and R code seamlessly into one presentable document.
The viewer will learn how to count occurrences of each item in an array.
In this seventh video of the Xpdf series, we discuss and demonstrate the PDFfonts utility, which lists all the fonts used in a PDF file. It does this via a command line interface, making it suitable for use in programs, scripts, batch files — any pl…

763 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

7 Experts available now in Live!

Get 1:1 Help Now