首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > CGI >

一个cgi程序(只是连接数据库)直接运行可以,被apache当cgi调用却老报500异常

2013-09-11 
一个cgi程序(只是连接数据库)直接运行可以,被apache当cgi调用却老报500错误一个cgi程序(只是连接数据库)直

一个cgi程序(只是连接数据库)直接运行可以,被apache当cgi调用却老报500错误
一个cgi程序(只是连接数据库)直接运行可以,被apache当cgi调用却老报500错误

代码如下:

C/C++ code
EXEC SQL BEGIN DECLARE SECTION;    char    d_acDBNAME[ 64 + 1] = "calvin@127.0.0.1:5432" ;    char    d_acDBUSER[ 64 + 1 ] = "calvin" ;    char    d_acDBPASS[ 64 + 1 ] = "calvin" ;EXEC SQL END DECLARE SECTION;#define SQLCODE        sqlca.sqlcode#define SQLSTATE    sqlca.sqlstateint main(){    EXEC SQL        CONNECT TO        :d_acDBNAME        USER            :d_acDBUSER        IDENTIFIED BY    :d_acDBPASS ;        if( SQLCODE )    {        printf("Content-type: text/html\r\n\r\n");        printf( "连接失败\r\n\r\n" );    }    else    {        printf("Content-type: text/html\r\n\r\n");        printf( "连接成功\r\n\r\n" );    }        return 0;}


makefile里这样写:
%.o : $(SQCPATH_SQC)\%.SQC
$(CC) -E -I$(CPATH_h) $(CFLAGS) -x c $(SQCPATH_SQC)\$*.SQC > $*.sqec
$(SQCP) $*.sqec
$(CC) -c -I$(CPATH_h) $(CFLAGS) $*.c -o $*.o

testdb.cgi:testdb.o
$(CC) -o $@ testdb.o -LD:/Work/PostgreSQL8.3/lib -lecpg

直接运行显示:
D:\Work\home\calvin\www\query_account\cgi-bin>testdb.cgi
Content-type: text/html

连接成功


在ie里被apache当cgi调用却返回500错误:
Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator, webmaster@netitanium.com and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.

apache日志error.log有:
[Mon Jun 16 23:04:19 2008] [error] [client 127.0.0.1] Premature end of script headers: testdb.cgi

高手帮忙解决,先谢谢啦


[解决办法]
你生成的header不正确么
[解决办法]
建议LZ把打印Http文件Header消息的那句话拿到最前面去。
EXEC SQL BEGIN DECLARE SECTION;
char d_acDBNAME[ 64 + 1] = "calvin@127.0.0.1:5432" ;
char d_acDBUSER[ 64 + 1 ] = "calvin" ;
char d_acDBPASS[ 64 + 1 ] = "calvin" ;
EXEC SQL END DECLARE SECTION;

#define SQLCODE sqlca.sqlcode
#define SQLSTATE sqlca.sqlstate

int main()
{
printf("Content-type: text/html\r\n\r\n");
EXEC SQL
CONNECT TO :d_acDBNAME
USER :d_acDBUSER
IDENTIFIED BY :d_acDBPASS ;

if( SQLCODE )
{

printf( "连接失败\r\n\r\n" );
}
else
{
printf( "连接成功\r\n\r\n" );
}

return 0;
}

我的异常网推荐解决方案:The server encountered an internal error () that prevented it from fulfilling this request.,http://www.myexception.cn/java-web/317.html

热点排行