よくある質問 - 全般

index.html だけが表示できません。

cgi-bin/ 配下にある *.html が表示できない、または CGI 専用サーバ上にある *.html が表示できないなどの設定がなされているプロバイダで起こる現象です。ver.7.00 以降の「じょじょBBS」や「じょじょゲスト」などは、メインとなる一覧ページを index.html の名称で通常の HTML ファイルとして出力するため、CGI と HTML のリクエストを分離させた環境では正常に動きません。はっきり言ってしまうと、そのようなプロバイダでの使用は推奨しません。

ただし、大きな利点が損なわれますが、以下のような方法で回避することが可能です。

  1. 付属の HTML ファイル、およびテンプレートファイル内に書かれているすべての "index.html" を "index.cgi" に変更します。
  2. 下記のスクリプトを index.cgi という名前で CGI として設置します。パーミッションは、通常は 755 です。
    #!/usr/local/bin/perl
    
    # HTTPヘッダの出力
    print "Status: 200 OK\n";
    print "Content-Type: text/html; charset=$Charset\n";
    print "Content-Style-Type: text/css\n";
    print "Content-Script-Type: text/javascript\n";
    print "Content-Language: ja\n\n";
    
    # index.htmlの表示
    open(HTML, "index.html");
    print $_ while (<HTML>);
    close(HTML);
    
    # 終了
    exit(0);
    
    __END__
    
  3. bbs.cgi、guest.cgi、dengon.cgiなどの中にある jscm::outLocation($IdxHTM); を jscm::outLocation("index.cgi"); に変更する。

海外サーバで CGI に表示される時差を補正したい。

jscm.pl が添付されたスクリプトの場合

jscm.pl の更新履歴の下にある $difftime に時差を時間単位で設定します(通常は正の値です)。

jwlib.pl が添付されたスクリプトの場合

*.cgi 中のすべての &jwlib'makeDate("yyyy/mm/dd(w) hh:nn"); を &jwlib'makeDate("yyyy/mm/dd(w) hh:nn", 時差); に変更します。

広告つきサーバで CGI が正常に動かない。

jscm.pl ver.1.01 以降の、ソース中の更新履歴の下に専用の設定項目があるので、参照してください。

ログファイルがダウンロードされてしまう。

.htaccess が使えるサーバの場合、log/ 配下のファイルをアクセス禁止に設定することによって対処可能です。log/ 配下に以下の内容の .htaccess というファイルを転送してください。ピリオドで始まるファイル名が作れない場合、サーバに転送してから名前を変えます。

<Limit GET POST>
order allow,deny
deny from all
</Limit>

または、ログファイルやデータファイルをCGIと見なすように設定し、500エラー(Internal Server Error)にしてしまうという方法もあります。この場合、一番上(通常は public_html/ の上の階層)にある .htaccess に以下の記述を追加するだけで実現可能です。

AddType application/x-httpd-cgi .cgi .log .dat

書き込みは成功してるのに画面切り替えでエラーになる。

tok2 や infoseek など、Location ヘッダが使えない一部のレンタルサーバでこの問題が発生します。

jscm.plの

sub outLocation
{
    my ($url) = @_;
    print "Status: 302 Found\n";
    print "Location: $url\n";
    print "\n";
    exit(0);
}

という箇所を以下のように書き換えてください。

sub outLocation
{
    my ($url) = @_;
    print "Content-Type: text/html\n\n";
    print "<html><head>\n";
    print "<meta http-equiv=\"refresh\" content=\"0;url=$url\">\n";
    print "</head></html>\n";
    exit(0);
}

広告の下に変な文字列が出る。

tsukaeru.net などでこの問題が発生します。

jscm.plの

sub outStdHeader
{
    my ($charset, $file) = @_;
    print "Status: 200 OK\n";
    print "Content-Type: text/html; charset=$charset\n";
    print "Content-Style-Type: text/css\n";
    print "Content-Script-Type: text/javascript\n";
    print "Content-Language: ja\n";
    if ($file) {
        print "Last-Modified: " . getLastModified($file) . "\n";
    }
    print "\n";
}

という箇所を以下のように書き換えてください。

sub outStdHeader
{
    my ($charset, $file) = @_;
    print "Content-Type: text/html; charset=$charset\n\n";
}
Presented by じょじょ♪ <webmaster@starwars.jp>  (http://www.starwars.jp/web/