Q&A

プログラムのディレクトリ構成は?
プログラムファイルのディレクトリはどのように構成すればいいですか?
ディレクトリ構成は各プログラムの「設置手順」に書いてあります。
圧縮ファイルを解凍したファイルがそのままディレクトリ構成になります。
xxx.cgi と xxxdata は同じディレクトリに置かなければなりません。

複数のCGIを設置する場合は下記のように各プログラム毎にディレクトリを分けて下さい。
  <複数CGIのディレクトリ構成例>
     |---bbs
     |   |---bbs.cgi
     |   |---bbsdata
     |
     |---link
        |---link.cgi
        |---linkdata

サーバの転送先はどこですか?
プログラムはサーバのどこに転送すればいいですか?
CGIのサーバ転送先は、サーバによって指定されている場合がありますので確認して下さい。
下記に例を挙げます。

(1)CGIプログラムをcgi-binディレクトリに置かなければならない場合があります。
   例) infoseek、@nifty、WAKWAK、hi-ho、Tripod
       <ディレクトリ構成例>
         cgi-bin
          |---bbs
              |---bbs.cgi
              |---bbsdata

(2)通常のHPのHTMLディレクトリとCGIを実行するディレクトリが分離されていて、
  CGIのディレクトリに画像ファイルなどを置いてもブラウザから表示できない場合があります。
  その場合は、xxxdataをHTMLディレクトリとCGIディレクトリの両方に転送します。
  設定は、本Q&Aの「画像が表示されない」を参照して下さい。
   例) @nifty、WAKWAK、Tripod
       <ディレクトリ構成例>
         |---public_html(homepage)
         |    |---bbsdata
         |
         |---cgi-bin
             |---bbs
                 |---bbs.cgi
                 |---bbsdata

FTPの転送モードの違いは?
FTPでアスキー転送モードとバイナリ転送モードの違いは何ですか?
アスキー(テキスト)転送モードはテキストデータを送るモードで、改行コードの変換を行います。
改行コードは下記のようにOSによって異なります。
自分のPCとサーバでOSが異なると改行コードの変換が必要です。

 Windows \r\n (CR+LF)  CR:Carriage Return、 LF:Line Feed
 Mac    \r   (CR)
 UNIX   \n   (LF)

バイナリ転送モードは画像などのバイナリファイルをそのまま送るモードです。
改行コードの変換は行いません。

FTPで転送モードをファイル拡張子によって自動判別できる場合は下記のように設定します。
・テキストファイル(cgi、pl、htm、shtml、txt、log、css): アスキー(テキスト)転送モード
・画像ファイル(gif、jpg): バイナリ転送モード

CGIを実行するURLは?
CGIを実行する為にCGIのURLはどのように指定すればいいですか?
CGIを実行するURLは通常のHPのURLと異なる場合がありますので確認して下さい。
下記に例を挙げます。
 @nifty   → http://hpcgi*.nifty.com/xxxx/xxx.cgi
 BIGLOBE → http://cgi.www5*.biglobe.ne.jp/~xxxx/xxx.cgi
       http://www7*.biglobe.ne.jp/~xxxx/xxx.cgi
 ぷらら   → http://cgi**.plala.or.jp/xxxx/xxx.cgi

404 Not Found エラー
CGIにアクセスしても「404 Not Found」のエラーが表示されます。
CGIのURLをご確認下さい。
CGIを実行するURLは通常のHPのURLと異なる場合があります。
下記に例を挙げます。
 @nifty   → http://hpcgi*.nifty.com/xxxx/xxx.cgi
 BIGLOBE → http://cgi.www5*.biglobe.ne.jp/~xxxx/xxx.cgi
       http://www7*.biglobe.ne.jp/~xxxx/xxx.cgi
 ぷらら   → http://cgi**.plala.or.jp/xxxx/xxx.cgi

サーバがWindowsで実行できません
サーバがWindowsですが、CGIを実行できません。
サーバがWindowsの場合は、UNIXと比較すると下記のような違いがあります。
・パーミッションの設定は不要です。
・1行目のPerlパスの記述は関係ありません。
・CGIが直接アクセスするパスの指定は絶対パスで指定する必要があります。

対処はプログラムの8行目に下記を追加して下さい。
if ($0 =~ /^(.*[\\\/])/) {chdir($1);}

上記でも正常に動作しない場合は下記のようにして下さい。
xxxdataディレクトリやcgi-lib.plなどのパスは相対パスで記述していますので、絶対パスに変更する必要があります。
絶対パスはサーバによって異なりますが、http://のURLでは指定できません。
又、管理画面で「画像格納ディレクトリ」を絶対パスで指定し、「画像読出ディレクトリ」をhttp://のURLで指定します。

Internal Server Error
Internal Server Error(500 Error)のエラーが表示されてCGIを実行できません。
下記の原因が考えられます。

(1)Perl パスが間違っている。
  プログラムの最初の行に下記のようにPerlへのパスが記述してあります。
    /usr/bin/perl
  このパスはサーバによって定められています。
  サーバのHPでPerlのパスを確認してサーバの指定と異なる場合は修正して下さい。
  多くの場合、/usr/local/bin/perl 又は /usr/bin/perl です。

(2)CGIのパーミッションが間違っている。
  CGIプログラムのパーミッションが実行可でないと上記エラーが発生します。
  パーミッションはサーバの指定によりますが、一般的には「755」に設定すれば実行できます。
  又、xxxdataディレクトリのパーミッションを「755」に設定してみて下さい。

(3)FTPの転送モードが間違っている。
  FTP転送でcgiファイルをバイナリモードで転送すると上記エラーが発生します。
  FTPの転送モードが下記のようになっているか確認して下さい。
   ・テキストファイル(cgi、pl、html、htm、txt、css): アスキー(テキスト)転送モード
   ・画像ファイル(gif、jpg): バイナリ転送モード

BIGLOBEでサーバーエラー
BIGLOBEでサーバーエラーが発生したり、発生しなかったりします。
プログラムの最初の行に記述してあるPerlパスを確認して下さい。
BIGLOBEの場合は、/usr/local/bin/perl です。

OPEN ERROR
「OPEN ERROR」のエラーが表示されます。
ファイルの読み書きでファイルを開こうとした時に発生するエラーです。
原因は下記が考えられます。

(1)xxxdataディレクトリがサーバの所定の場所に存在しない。
  xxxdataディレクトリはCGIプログラムと同じディレクトリに置かなければなりません。

(2)パーミッションが書込可になっていない。
  パーミッションはサーバの指定によりますが、xxxdataディレクトリのパーミッションを
  「777」、その中のファイルのパーミッションを「666」に設定します。

(3)option.txtファイルが存在しない。
  xxxdataディレクトリの中にoption.txtファイルが存在しなければなりません。
  もし存在しない場合は、option.txtという空ファイルを作成して、サーバのxxxdata
  ディレクトリの中に転送します。
  option.txtのパーミッションを「666」に設定します。
  尚、option.txtはプログラムによりoption.cgiの場合があります。

修正キーを入力せずに修正できてしまう
掲示板などで[修正]をクリックすると修正キーを入力しなくても修正できますが、誰でも修正できてしまうのではないですか?
この修正はIPアドレスを認識しているので、書込み直後ならば本人は修正キーが必要ありません。
しかし、IPアドレスが異なる他の人が修正しようとすると修正キーの入力が必要です。
他の人が書き込んだ記事に対して[修正]をクリックしてみると分かります。
但し、IPアドレスが同じならば修正できます。

最初のパスワードが分かりません
CGIを設置して管理画面に入る為にはパスワードが必要ですが、最初のパスワードが分かりません。
パスワードは各プログラムの「使用方法」に書いてあります。
パスワードの初期値は半角小文字で「cgi」の3文字です。
パスワードは管理画面で変更して下さい。

パスワードがエラーになります
管理画面に入るパスワード「cgi」を入力してもエラーになってしまいます。
データの初期設定ができていない可能性があります。
原因は下記が考えられます。

(1)xxxdataディレクトリがサーバの所定の場所に存在しない。
  xxxdataディレクトリはCGIプログラムと同じディレクトリに置かなければなりません。

(2)パーミッションが書込可になっていない。
  パーミッションはサーバの指定によりますが、xxxdataディレクトリのパーミッションを
  「777」、その中のファイルのパーミッションを「666」に設定します。

パスワードを忘れてしまいました
パスワードを忘れてしまったのですが、どこかを見れば分かりますか?
パスワードは暗号化されていて元に戻すことはできないので管理者でもパスワードは分かりません。
その場合はパスワードを初期化することになります。

初期化は、xxxdata/option.txtのファイルをサーバへ転送して下さい。option.txtは空ファイルです。
但し、上記のファイル内容が初期化されますので、管理画面の基本設定の内容を再度、設定し直す必要があります。

パスワードは「cgi」に初期化されます。
尚、option.txtはプログラムによりoption.cgiの場合があります。

管理画面の設定ができません
管理画面の設定項目が全て空白で何も設定できません。
データの初期設定ができていません。原因は下記が考えられます。

(1)xxxdataディレクトリがサーバの所定の場所に存在しない。
  xxxdataディレクトリはCGIプログラムと同じディレクトリに置かなければなりません。

(2)パーミッションが書込可になっていない。
  パーミッションはサーバの指定によりますが、xxxdataディレクトリのパーミッションを
  「777」、その中のファイルのパーミッションを「666」に設定します。

投稿でエラーが発生します
掲示板、投稿型の写真アルバム、登録型のスケジュール、登録型のリンク集で投稿時にエラーが発生します。
上記の自由投稿型のCGIについて、英文や中国文のスパム投稿防止の為、
投稿時にひらがな又は全角カタカナを1文字以上入れるようにお願い致します。
この制限を解除したい場合は、CGIプログラムで下記の記述を削除願います。

if ($wcom !~ /(\x82[\x9F-\xF2])|(\x83[\x40-\x96])/) {&error;}

又、投稿内容でhttpのリンク数を制限していますので、リンク数は4個以下でお願い致します。

最大記事数は?
記事数は最大どのくらいでしょうか?
記事の最大件数は特に制限しておりませんが、あまり多くなるとサーバに負荷が掛かると思いますので、最大300件程度でお使い願います。

分類の最大件数は?
分類を設定できるプログラムについて、分類の件数は最大どのくらいでしょうか?
分類の最大件数は特に制限しておりませんが、あまり多くなるとサーバに負荷が掛かると思いますので、最大30件程度でお使い願います。

画像が表示されない (1)
アイコンなど全ての画像が表示されません。
サーバによっては、通常のHPのHTMLディレクトリとCGIを実行するディレクトリが分離されていて、CGIのディレクトリに画像ファイルを置いてもブラウザから表示できない場合があります。
主なプロバイダとしては下記があります。
 @nifty、WAKWAK、hi-ho、Tripod

その場合は、xxxdataディレクトリをHTMLとCGIの両方のディレクトリに転送します。
そして、管理画面のアイコン画像又は「画像読出ディレクトリ」でHTML側のxxxdataディレクトリのURLを指定します。
 (例) http://homepage*.nifty.com/xxxx/xxxdata/home.gif
     http://homepage*.nifty.com/xxxx/xxxdata

画像が表示されない (2)
画像掲示板や写真アルバムなど画像を表示するCGIで画像をアップしても表示されません。
サーバによっては、通常のHPのHTMLディレクトリとCGIを実行するディレクトリが分離されていて、CGIのディレクトリに画像ファイルをアップロードしてもブラウザから表示できない場合があります。主なプロバイダとしては下記があります。
 @nifty、WAKWAK

その場合は、xxxdataディレクトリをHTMLとCGIの両方のディレクトリに転送します。そして、管理画面で「画像格納ディレクトリ」にHTMLディレクトリの絶対パス又はCGIからの相対パスを指定します。URL(http://)は使えません。絶対パスはサーバによって定められています。
 @niftyの場合 → /homepage/
 WAKWAKの場合 → /public_html/
例えば、@niftyの場合「画像格納ディレクトリ」を下記のように指定します。
 (例) /homepage/xxxdata
そして、「画像読出ディレクトリ」に上記ディレクトリのURLを指定します。
 (例) http://homepage*.nifty.com/xxxdata

BIGLOBEで画像が表示されない
サーバがBIGLOBEですが、画像が全く表示されません。
BIGLOBEの場合はCGIを呼び出すURLが異なる為、画像を表示するには管理画面の「画像読出ディレクトリ」でxxxdataディレクトリをhttp://のURLで指定します。
 (例) http://www**.biglobe.ne.jp/~xxxx/xxxdata
「画像格納ディレクトリ」を変更する必要はありません。

hi-hoで画像が表示されない
サーバがhi-hoですが、画像が全く表示されません。
hi-hoの場合は下記のように設定します。

(1)CGIプログラムを cgi-binディレクトリの直下に置きます。

(2)xxxdataを cgi-binディレクトリと htmlディレクトリの両方に転送します。

(3)管理画面で「画像格納ディレクトリ」と「画像読出ディレクトリ」を下記のように指定します。

   ■画像格納ディレクトリ  ../html/xxxdata
   ■画像読出ディレクトリ  http://www.xxx.hi-ho.ne.jp/xxxx/xxxdata

  「画像読出ディレクトリ」はhtmlディレクトリのxxxdataをhttp://のURLで指定します。

(4)CGIのURLは下記のようになります。
   http://www.xxx.hi-ho.ne.jp/cgi-bin/user/xxxx/xxx.cgi

   <ディレクトリ構成例>
     |---cgi-bin
     |    |---bbsdata
     |    |---bbs.cgi
     |
     |---html
         |---bbsdata

画像アップロードができない
「画像格納ディレクトリ」と「画像読出ディレクトリ」の設定を確認しましたが、それでも画像のアップロードができません。
原因はパーミッションが考えられます。
パーミッションはサーバの指定によりますが、xxxdataディレクトリのパーミッションを「777」に設定しているか確認して下さい。

ファイルを作成できません
「ファイルを作成できません」のエラーが表示されます。
ファイルを新しく作成しようとした時に発生するエラーです。
ファイルは xxxdataディレクトリの中に作成されるので、xxxdataディレクトリのパーミッションを「777」に設定しているか確認して下さい。
それでもエラーが発生する場合は、サーバ側の制限によって新しいファイルを生成できない可能性があります。サーバ側で使用制限していないか確認して下さい。使用制限の場合は対処できません。

画像を削除できません
写真アルバムのCGIですが、画像ファイルをFTPで転送した後、その画像ファイルを削除することができません。
原因はパーミッションが考えられます。
パーミッションはサーバの指定によりますが、FTPで転送した画像ファイルのディレクトリのパーミッションを「777」にして下さい。

スケジュールが来年までしか入力できない
スケジュールの入力が来年までしか選択できませんが、その後は使用できないのでしょうか?
スケジュールの入力は自動的に翌年まで入力できます。
例えば、2009年になれば2010年まで入力できます。
その後も同様に入力できます。

BASIC認証が効きません
BASIC認証で認証ダイアログが表示されますが、ユーザー名とパスワードを入力しても認証されません。
管理画面で「基本設定」の「パスワードファイル」を絶対パスで指定して下さい。
この絶対パスはhttp://のURLでは指定できません。
絶対パスは「パスワードファイル」入力欄の下にCGIの絶対パスが表示されますので、
それを参考にして「.htpasswd」ファイルの絶対パスを指定して下さい。

LaCoocanでBASIC認証が効きません
@niftyのLaCoocanサーバでBASIC認証のダイアログが表示されず、403Error Forbiddenが表示されます。
@niftyのLaCoocanサーバの場合はCGIプログラムを下記のように変更して下さい。
変更前 AuthUserFile $pwfile
変更後 AuthUserFile .htpasswd

hi-hoでBASIC認証が効きません
hi-hoサーバでBASIC認証の認証ダイアログが表示されますが、ユーザー名とパスワードを入力しても認証されません。
hi-hoの場合はCGIプログラムを下記のように変更して下さい。
変更前 AuthUserFile $pwfile
変更後 AuthUserFile ~アカウント/html/xxxx/.htpasswd
xxxxは.htpasswdのディレクトリです。

時刻が合っていません
表示される時刻が合っていません。
CGIでローカル時間を使っていますので、サーバが持っている時計の時刻が表示されます。
サーバの時計が合っていない場合があります。
又、海外に設置しているサーバの場合はその現地時刻になり日本の日時と異なります。
その場合は、プログラムの8行目に下記を追加して時差を設定します。
$ENV{'TZ'} = "JST-9";

文字の種類、サイズを変更したい
表示全体の文字の種類やサイズを変更したいのですが、簡単に設定できますか?
全体の文字の種類やサイズは外部スタイルシートで設定できます。
外部スタイルシートは各プログラムファイルの「xxxdata」ディレクトリの中にあります。
ファイル名は「style.css」です。
例えば、文字の種類を「メイリオ」、文字サイズを 11ポイントに指定したい場合は
上記ファイルで下記のように指定して下さい。

body,table {
font-family: メイリオ;
font-size: 11pt;
}

リンク、スクロールバーの色を変えたい
リンク、スクロールバーの色を変えたいのですが、どうすればできますか?
CGIで外部スタイルシートを使っていますので、そのファイルを変更すればいいです。
ファイル名は「style.css」で各プログラムファイルの「xxxdata」ディレクトリの中にあります。
ファイル内容は、こちらを参照して変更して下さい。

スタイルシートが効かない
スタイルシートをstyle.cssファイルで記述していますが、その記述がCGIの表示に反映されません。
style.cssファイルの呼び出しが正常にできていない可能性があります。
原因は下記の場合が考えられます。

(1)通常のHPのHTMLディレクトリとCGIを実行するディレクトリが分離されていて、
  CGIのディレクトリにstyle.cssファイルを置いても呼び出しができない場合。
  この場合は、style.cssファイルをHTMLディレクトリに置きます。
    例) @nifty、WAKWAK、Tripod

(2)CGIを実行するURLが通常のHPのURLと異なる場合。
    例) BIGLOBE

対処は、管理画面で「スタイルシート」又は「画像読出ディレクトリ」を指定できる場合はhttp://のURLを入力します。
管理画面で指定できない場合はプログラムを変更してURLを直接指定する必要があります。

同じCGIを2個設置したい
同じCGIを2個設置したいのですが、ファイル名を変更すればいいですか?
ファイル名を変更すると正常に動作しなくなる場合があります。
同じCGIを複数設置する場合は、設置するディレクトリを分けて下さい。
例えば、下記のようにbbs1、bbs2ディレクトリを設けます。
そうすれば、ファイル名を変更する必要がありません。

  <同じCGIの複数設置例>
     |---bbs1
     |   |---bbs.cgi
     |   |---bbsdata
     |
     |---bbs2
        |---bbs.cgi
        |---bbsdata

日本語の文字化け
日本語の文字化けが発生します。
CGIプログラムは文字コードがシフトJISで作成され、CGIの実行結果の表示はプログラムでシフトJISを指定しています。
スクリプト修正やFTP転送において文字コードを変更していないか確認して下さい。

クッキーが効きません
フレームを使って掲示板を表示しているのですが、クッキーが効きません。
フレームを使うとクッキーが効かない場合があります。
ブラウザがIEの場合に発生するようです。
掲示板をフレームから外して全画面で表示させるか新しいウィンドウを開いて使って下さい。
又は、ブラウザのクッキーを受け入れる設定を緩和して下さい。
IE6の場合は「ツール」→「インターネットオプション」→「プライバシー」で設定できます。

HOME Copyright (C) CGI-design All Rights Reserved.