Ratoku
2001/12/06, 02:09 PM
はじめまして。
質問です。
TurboLinux6.0でコンパイル、確認をしたCGIをアップロードして実行して
みたところ、以下のページが表示されてしまいます。
http://www.xrea.com/err500.htm
拡張子を.xcgにしているのが原因かと思い.cgiで実行してみたのですが
結果は同じでした。以前、他のCGIはTurboLinuxで動作確認が取れたものはXREAでも問題は発生しません
でした。
想像ですが、
fp=fopen("../main.html", "r");
の一番目の引数のパスの指定が間違っているか、また、使用できない
標準関数を使用しているとかではないかと思います。
が、原因が特定出来ません。
解決する方法は無いでしょうか?
パーミッションを変更してみた際に、一度は解決したと思ったのですが、
結局だめでした。
以下はそのプログラムのソースです。
---------------------------------------------------------
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
#include <string.h>
#define MAXBUF 2048
void Count(char*);
int main(void)
{
FILE *fp;
char buf[MAXBUF];
printf("Content-Type: text/plain\n\n");
fp=fopen("../main.html", "r");
while(fgets(buf, MAXBUF, fp)){
if(strstr(buf, "<!--counter-->")){
Count("count.dat");
}else{
fputs(buf, stdout);
}
}
fclose(fp);
fflush(stdout);
return 0;
}
void Count(char* cntfl)
{
int cnt;
FILE* fp;
fp = fopen(cntfl, "r+");
lockf(fileno(fp), F_LOCK, 0);
if( fscanf( fp, "%d", &cnt ) != 1 ){
if(fp != NULL){
fclose(fp);
}
printf("<FONT size=\"-1\" color=\"#FFFFFF\">あなたは ???????? 番目のお客様です。</FONT>");
return;
}
cnt++;
rewind(fp);
fprintf(fp, "%08d", cnt);
lockf(fileno(fp), F_ULOCK, 0);
fclose(fp);
printf("<FONT size=\"-1\" color=\"#FFFFFF\">あなたは %08d 番目のお客様です。</FONT>", cnt);
}
質問です。
TurboLinux6.0でコンパイル、確認をしたCGIをアップロードして実行して
みたところ、以下のページが表示されてしまいます。
http://www.xrea.com/err500.htm
拡張子を.xcgにしているのが原因かと思い.cgiで実行してみたのですが
結果は同じでした。以前、他のCGIはTurboLinuxで動作確認が取れたものはXREAでも問題は発生しません
でした。
想像ですが、
fp=fopen("../main.html", "r");
の一番目の引数のパスの指定が間違っているか、また、使用できない
標準関数を使用しているとかではないかと思います。
が、原因が特定出来ません。
解決する方法は無いでしょうか?
パーミッションを変更してみた際に、一度は解決したと思ったのですが、
結局だめでした。
以下はそのプログラムのソースです。
---------------------------------------------------------
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
#include <string.h>
#define MAXBUF 2048
void Count(char*);
int main(void)
{
FILE *fp;
char buf[MAXBUF];
printf("Content-Type: text/plain\n\n");
fp=fopen("../main.html", "r");
while(fgets(buf, MAXBUF, fp)){
if(strstr(buf, "<!--counter-->")){
Count("count.dat");
}else{
fputs(buf, stdout);
}
}
fclose(fp);
fflush(stdout);
return 0;
}
void Count(char* cntfl)
{
int cnt;
FILE* fp;
fp = fopen(cntfl, "r+");
lockf(fileno(fp), F_LOCK, 0);
if( fscanf( fp, "%d", &cnt ) != 1 ){
if(fp != NULL){
fclose(fp);
}
printf("<FONT size=\"-1\" color=\"#FFFFFF\">あなたは ???????? 番目のお客様です。</FONT>");
return;
}
cnt++;
rewind(fp);
fprintf(fp, "%08d", cnt);
lockf(fileno(fp), F_ULOCK, 0);
fclose(fp);
printf("<FONT size=\"-1\" color=\"#FFFFFF\">あなたは %08d 番目のお客様です。</FONT>", cnt);
}