Project

General

Profile

Actions

Bug #1256

closed

CGI in C - 500 Error - cygwin

Added by Anonymous almost 17 years ago. Updated almost 8 years ago.

Status:
Obsolete
Priority:
Normal
Category:
core
Target version:
ASK QUESTIONS IN Forums:

Description

Hi,

I am testing a simple CGI executable written in C. (NOT FCGI).

------------------------------- simple c code

#include <stdio.h>

int main(void) {
printf("content-type: text/html\n\n");
printf("cgi c\n");
return(0);
}

------------------------------- to test.xx

cc -o test.xx test.c

------------------------------- my lighttpd conf file

  1. CGI module
    cgi.assign = ( ".pl" => "/usr/bin/perl",
    ".xx" => "" )

With the above I get a 500 error

127.0.0.1 127.0.0.1 - +0000 "GET /test.xx HTTP/1.1" 500 369 "-" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)"


I am running lighthttpd 1.4.9-1 unde cygwin.

Thanks

Actions #1

Updated by darix almost 17 years ago

can you try:


#include <stdio.h>

int main(void)
{
  printf("Content-Type: text/plain\r\n");
  printf("\r\n\r\n");
  printf("cgi c\n");
  return(0);
}

and do you get any messages in the error log?

Actions #2

Updated by Anonymous almost 17 years ago

sorry, still the same. carriage return and newline did not make a difference


  1. CGI module
    cgi.assign = ( ".pl" => "/usr/bin/perl",
    ".cgi" => "/usr/bin/perl",
    ".xx" => "" )

#include <stdio.h>

int main(void) {
printf("Content-Type: text/plain\r\n");
printf("\r\n\r\n");
printf("cgi c\n");
return(0);
}


cc -o test.xx test.c


access.log

127.0.0.1 127.0.0.1 - +0000 "GET /test.xx HTTP/1.1" 500 369 "-" "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)"


nothing in error log


Actions #3

Updated by justinmteal almost 17 years ago

i've got a similar problem with perl, but it's a less simple script than that. the script is, however less complex than another script i have that runs just fine.

access.log :

192.168.1.1 jmteal.dyndns.org - -0400 "GET /~teal/cgi-bin/percup.cgi HTTP/1.1" 500 369 "http://jmteal.dyndns.org/~teal/scripts/percuperl/percup.html" "Mozilla/5.0 (Macintosh; U; PPC Mac OS X Mach-O; en-US; rv:1.8.1.4) Gecko/20070515 Firefox/2.0.0.4"
192.168.1.1 jmteal.dyndns.org - -0400 "GET /~teal/cgi-bin/percup.cgi HTTP/1.0" 500 369 "http://jmteal.dyndns.org/~teal/scripts/percuperl/percup.html" "w3m/0.5.1+cvs-1.968"

nothing in error.log

"http://jmteal.dyndns.org/~teal/scripts/percuperl/percup.html" has a link to the offending script at the bottom that will let you view the code.

What makes it weird is that if i reload a few times, it works intermittently!

any help appreciated!

Actions #4

Updated by Anonymous almost 17 years ago

it's not the same problem as my C cgi executable.

--

according to your description, your percup perl script is getting intermittent "400" response. "400" is:

10.4.1 - 400 Bad Request
The request could not be understood by the server due to malformed syntax. The client SHOULD NOT repeat the request without modifications.

--

My C cgi executable is getting a "500" response. "500" is

10.5.1 - 500 Internal Server Error
The server encountered an unexpected condition which prevented it from fulfilling the request.

--

Actions #5

Updated by Anonymous almost 17 years ago

no no... read the access.log. it's a 500 i'm getting. if the problem was in my script, i would assume it would never work. it just works intermittently.

Actions #6

Updated by Anonymous almost 17 years ago

weird. the first line that the script printed:

print "<DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\&quot;&gt;\n";

same as another script that works every time. for some reason lighttpd really hated this line. every page on my site starts with that, but it kept giving me a 500 90% of the time with this script. any ideas?

-- teal.justin.m

Actions #7

Updated by Anonymous almost 16 years ago

i am getting 500 errors running a cgi binary 'hello.exe' compiled from 'hello.c' (see link below) using gcc 3.4.4 and serving on lighttpd-1.4.18 / cygwin 1.5.25 / winxpsp2 (see link below) with lighttpd.conf cgi.assign '.exe' => ""

a similar 'hello.cgi' (#!/bin/sh) bash shell script serves fine using the same configuration with lighttpd.conf cgi.assign '.cgi' => ""

ua tested were ff3.0b5 and ie7.0.5739.11. happy to do more in-depth trouble-shooting if helps.

reference

strace http://pastebin.com/f29b29978 (request for 'hello.exe')

hello.c http://pastebin.com/fa9ffd57 (source for 'hello.exe')

-- cpl160 at gmail.com

Actions #8

Updated by stbuehler over 15 years ago

  • Status changed from New to Fixed
  • Resolution set to worksforme

There have been many changes in mod_cgi and it works for me.

Please reopen if you still have problems.

Actions #9

Updated by stbuehler over 15 years ago

  • Status changed from Fixed to Missing Feedback
Actions #10

Updated by Anonymous over 15 years ago

MS Windows 2000, Cygwin, lighttpd

Can run a CGI Perl script with .pl and .cgi extensions. Cannot run a CGI executable written in C++. Instead of executing, the browser starts downloading the executable. Filename is cgitest.exe.

$ /usr/sbin/lighttpd -v
lighttpd-1.4.20 - a light and fast webserver
Build-Date: Oct 19 2008 14:04:03

  1. CGI modules
    alias.url = ("/cgi-bin/" => "/var/www/cgi/")
    $HTTP["url"] =~ "/cgi-bin/" {
    cgi.assign = ( ".pl" => "/usr/bin/perl", ".cgi" => "", ".exe" => "", "" => "")
    }
Actions #11

Updated by Anonymous over 15 years ago

  • Status changed from Missing Feedback to Reopened
Actions #12

Updated by trumor almost 13 years ago

I had the same problem.

The problem was that the execute bit hasn't been set correctly. (while the read bit was set)

For example

$> ls -l test.cgi
-rwxr-xr-- 1 root root   76 17. Jun 15:18 test.cgi

After I executed

$> chmod +rx test.cgi 

everything worked.

Hope this helps.

Actions #13

Updated by gstrauss almost 8 years ago

  • Description updated (diff)
  • Missing in 1.5.x set to Yes
Actions #14

Updated by gstrauss almost 8 years ago

  • Status changed from Reopened to Obsolete
Actions

Also available in: Atom