トップページ サービスご案内 お知らせ お申込み お問い合わせ コミュニティ サポート オンラインマニュアル

バーチャルドメイン

CGIプログラムの使い方

CGIは自由に使えるようになっていますが、間違った設置方法やパーミッション設定などでは動作しませんので 下記を参照に正しく設定してください。

ファイル拡張子 ***.cgi
パーミッション 755(又は rwxr-xr-x
.htaccess ファイル 不要
※ パーミッションについて、CGI付属の説明書で 777 (rwxrwxrwx)と指定されているものがありますが、 弊社のサーバでは suexec という機能により 755 (rwxr-xr-x)の設定で安全にCGIを動作させることができます。 (777の設定はセキュリティ上危険なため、これを回避できるようになっています)

パーミッションはFTPソフトで設定するか、TELNETで接続して chmod コマンドを使って設定してください。

CGIファイルの改行コードはUNIXの形式(LFのみ)になっている必要があります。 WindowsやMacintoshで編集されたファイルはあらかじめ改行コードを変更してから転送するか、 FTPソフトの設定でアスキーモードで転送するようにしてください。(fetchなどの自動判別は失敗することがあります)

多数のチャットCGIなどを置くにはあまり向いていません。 (禁止ではありませんが BUSY メッセージが比較的多く出るようになることがあります)
フリーソフトのCGIなど、個々のソフトウェアについては製造元へお問い合わせください。弊社へお問い合わせいただいてもお答えしかねます。

CGIの作成時には、できるだけプログラムを最適化して、処理が早くなるように作ってください。
極端に動作の重いCGIは動作途中に異常終了を起すことがありますのでご注意ください。

使用しているディスク容量が満杯(100MB)の場合、CGIがおかしな動作をしたりファイルを破損してしまうことがあります。 ときどきディスク容量をチェックするようにしてください。


各種コマンドのパス

Perl
(バージョン5)
/usr/local/bin/perl
又は /usr/bin/perl
sh /bin/sh
csh /bin/csh
Sendmail /usr/sbin/sendmail
gzip /usr/bin/gzip
nkf /usr/local/bin/nkf
uuencode
uudecode
/usr/bin/uuencode
/usr/bin/uudecode
Procmail /usr/local/bin/procmail

この他にも多数のコマンドがありますが、コマンドのパスはTELNETで接続し
  which コマンド
と入力すれば自動的に検索され表示されます。


パーミッションの変更

CGIはsuexecという機能により、お客様のユーザー権限で動作します。(一般的にはnobodyなど)
ディレクトリやCGIファイルのパーミッションは 755 以上の権限を設定しないでください。 フリーソフトなどで配布されているCGIには 777 と設定するよう指示されているものもありますが、755 で問題なく動作します。

    CGIのファイルには実行属性(パーミッション)が付いていないと正しく動作しません。
    FTPソフトによってはパーミッションの変更ができるようになっているものもあります。


    これは WS_FTP での例です。
    パーミッションを変更するファイルを選択し、右クリックメニューから"chmod"を選択します。 出てきたウィンドウから"Owner"の"Execute"にチェックを付けてください。


    TELNETでログインしてからは chmod コマンドを使って変更します。
    (こちらはUNIXに関してある程度知識のある人向けです)

    
    % chmod +x test.cgi           ←属性の変更コマンド
    % ls -l test.cgi              ←ファイル一覧表示コマンド
    -rwxr-xr-x  1 username users    4760 Jun  1 00:00 test.cgi
    
      ↑
      ここに「x」が表示されていれば実行属性が付いています。
    







ワンポイント

  • CGIを設置したがCGI Permission/Execute Errorというエラーが出る

    CGIのファイルかそのディレクトリのパーミッションが正しくありません。 そのエラーの内容も表示されていますのでエラーメッセージを確認し、パーミッションを修正してください。

  • CGIを設置したがInternal Server Errorというエラーが出る

    CGI自体のエラーです。(パーミッションは正常です) CGIプログラムの文法ミスや文字コード、必要なファイルなどを確認してください。

  • アクセスするとService Temporarily Unavailable又はCGI Execute BUSY!!というエラーが出る

    アクセスが多すぎるか、CGIが動作不良を起している可能性があります。 (後者のほうが確率が高いようです)

  • 掲示板(チャット)のファイルロック機構は flock と link(又はopen)のどちらが良いか?

    flockはファイルロック専用の関数なのでこちらが確実です。 linkなどは疑似的なファイルロックに使えるというだけで、動作不良の原因となります。
    一部のCGIでは疑似的ロックしか使えないものがありますが、アクセスが多いサイトでは頻繁に動作不良を起こす原因となります。




(C)Copyright 1996-2001, SRS SAKURA Internet Inc.