Solved

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

Posted on 2007-03-28
8
1,508 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
ID: 18808682
Have you looked at the error log?  What is the error reported?
0
 
LVL 32

Author Comment

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

Expert Comment

by:Adam314
ID: 18809911
Try putting this at the top of your script:
use CGI::Carp qw(fatalsToBrowser);
0
Master Your Team's Linux and Cloud Stack!

The average business loses $13.5M per year to ineffective training (per 1,000 employees). Keep ahead of the competition and combine in-person quality with online cost and flexibility by training with Linux Academy.

 
LVL 51

Expert Comment

by:ahoffmann
ID: 18835160
when/where is your header.cgi used?
0
 
LVL 15

Expert Comment

by:samri
ID: 18849341
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
ID: 18887787
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
ID: 18888418
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
ID: 18889836
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

Ransomware: The New Cyber Threat & How to Stop It

This infographic explains ransomware, type of malware that blocks access to your files or your systems and holds them hostage until a ransom is paid. It also examines the different types of ransomware and explains what you can do to thwart this sinister online threat.  

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
combine multiple lines 2 61
Perl script to delete older files 6 87
Questions about this React unit test 4 63
AWS EC2 & RDS Instance 5 35
In the distant past (last year) I hacked together a little toy that would allow a couple of Manager types to query, preview, and extract data from a number of MongoDB instances, to their tool of choice: Excel (http://dilbert.com/strips/comic/2007-08…
Introduction This article is intended for those who are new to PHP error handling (https://www.experts-exchange.com/articles/11769/And-by-the-way-I-am-New-to-PHP.html).  It addresses one of the most common problems that plague beginning PHP develop…
Explain concepts important to validation of email addresses with regular expressions. Applies to most languages/tools that uses regular expressions. Consider email address RFCs: Look at HTML5 form input element (with type=email) regex pattern: T…
In this fifth video of the Xpdf series, we discuss and demonstrate the PDFdetach utility, which is able to list and, more importantly, extract attachments that are embedded in PDF files. It does this via a command line interface, making it suitable …

773 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