WINユーザーも、MACユーザーもこれなら出来る!?
CGIマニュアル CGIマニュアル CGI設置・アレンジ講座
Menu
1 はじめに
2 まずはダウンロード
3 次にエディットを
4 そしてアップロード
5 パーミッション設定
6 いよいよCGIアレンジ
7 トラブルの解決
8 Q&A
9 フォーラム


AND OR
8 Q&A
■ 文字化けする その一
日本で一般的に配布されているもの殆どが、「Shift_jis」で記述されたスクリプトですので、 特定の文字で文字化けします。
例えば、「表示」という文字はヒアドキュメント文の中でも正しく、『表示』、されません。「表\示」と記述して下さい。
このように、後ろに「\」をいれる必要がある文字の例;

Ы?
■ 文字化けする そのニ
初期設定ファイルのファイルタイプが「Shift_jis」以外の日本語になっていると、動作は正常にしますが日本語のみが文字化けします。

これを避けるためには他のスクリプトファイルと同じようにアップロードする前にクリプトファイルの日本語モードを「Shift_jis」、改行モードを「LF」にして、いったん自分のパソコン上へ「新しい名前を付けて保存」します。

■ 画像が表示されない。
画像へのパスの記述が間違っている。
特にcgi-bin内の画像はブラウザで直接は表示されないサーバーもあります。
こういう場合は、かなり面倒な作業となりますが、スクリプト内のそれらの画像urlを設定し直さなくてはなりません。
ブラウザのソースを見ると実際どうなっているのかが推測できます。
■ スクリプトが全て改行無しの連続文章になる。
メモ帳などの簡易エディターでは正しく改行モードを判断できないので、 先に上げたお薦めエディターをご利用下さい。
■ アップすべきホルダーが見当たらない。
一応アーカイブに同封してある例えば「lock」「photo」などの空ホルダーは 圧縮形式と解凍ソフトの関係で削除されることがあります。 この様な必要なホルダーが見当たらない場合はサーバー上へ新規作成すればオッケーです。
■ 意味不明な文字や記号が表示される。
圧縮形式と解凍ソフトの関係で解凍時に余分な文字や記号がデータファイルに追加されることが有ります。 ほとんどのデータファイル(dat.cgiなど)は、空ファイルですのそのような文字や記号は削除してから テキストモードでアップロードして下さい。
■ メールが送信されない。
sendmailのパスが間違っています。詳しくは、プロバイダーの指示にしたがって設定して下さい。
■ 「別ページからの投稿は出来ません」とエラーがでる。
  1. 設置したメインスクリプトのurlの設定が間違っています。
  2. 複数設定できる場合など追加で「index.html」と設定しても「index.html」を省略してアクセスしたときに は違う「url」として判断されます。
  3. Norton Internet Securityでブラウザプライバシーを設定し、 リンク元のRefererを返さない状態でも、このエラーとなります。
  4. どうしてもエラーにかかるようでしたらエラーチェックを外してください。
■ アクセスは出来るけど、動作がおかしい。
  1. よく有ります!アップするときに「ホームページビルダー」等のHTMLソフトを使用 した場合にある程度は正常に動作することも有り、これが原因だと気が付かない事があります。
  2. スクリプトを設置したディレクトリーのパーミッションの設定により、「CGIは動くけどブラウザの表示がおかしい」 などの現象が起こることもあります。
■ 書込みが出来ない。
  1. ログファイルへのパス記述が正しくない。
  2. ログファイルのパーミッションが正しくない。
  3. ログファイルが正しくアップされていない。
  4. ログファイルを入れたディレクトリー、或いはファイルを出力するディレクトリーの パーミッションが正しくない。
  5. HTML式スクリプト(最終的に閲覧用HTMLファイルを作成するスクリプト) アウトファイルindex.htmlをエディターでチェックしたりすると、 これで編集した事になってしまい(エディターの設定によります)、次のリニューアルでエラーになります。 あくまでアウトファイルindex.htmlは、 スクリプトが作成するものですので、直接アウトファイルを編集、アップロード、は出来ません。

    ログ書き込み後のファイルアウトでエラーになると、 ログは書き込んだけどアウトファイルは作成されていない状況になります。 この場合は、前からある古いファイルアウトのindex.htmlなどを手作業で削除してからリニューアルして下さい。
■ 書込みは出きるけど、動作が重い。
ロックが連続エラーにかかり上手く動作していない可能性が有ります。
ロックディレクトリーのパーミッションが755などの時も上手く動作せず重くなることが有ります。
ロックのディレクトリー設定が例えば「空欄」などと正しく設定していない場合も連続エラーになるので 動作が重くなり得ます。
■ 解凍したけどファイルが足らない。
お使いの解凍ソフトによっては、0Kbのファイルは削除してしまうものがあります。 データファイルは0kbですので、消えた可能性もあります。
■ スクリプトを開こうとすると、メモリが足りません、というエラーが出る。
メモ帳などの簡易エディターで編集するのは危険です。前述のお薦めのソフトをご利用下さい。
■ 同じスクリプトを複数設置したい。

以下の点を注意して下さい。
  1. スクリプトの名前を変えるか、それぞれ別々のディレクトリーの中へ設置する。
  2. 名前を変更した場合、スクリプト内、初期設定部分、スキン、などスクリプト名が記述されているところも同じく変更して下さい。
  3. クッキー機能のあるものは、クッキーの名前を設定することが 出来ます。 この設定によりスクリプト別にクッキーを認識することが出来るようになります。
■ 掲示板へのいたずら迷惑書き込みや、海外からの英文スパム宣伝書き込みで困っている。
一般的に以下の方法が可能です。
  1. アクセス拒否リストにURLを追加する。
  2. 書き込み禁止ワードの設定
  3. 日本語のないメッセージは許可しない。
  4. 合い言葉システムを設定する。
対応していないスクリプトを編集するとき。

  • 日本語のないメッセージは許可しないとき、
    以下を、datacheck等のデータチェックサブルーチンへ追加する。

    #日本語のないメッセージは許可しない時1。
    my $japanese = 1;

    if ($japanese) {
    $mymsg = $msg;
    if ($mymsg !~ /(\x82[\x9F-\xF2])|(\x83[\x40-\x96])/) {
    &error("メッセージは日本語で!");
    }
    }

  • 合い言葉システム設定例

    新規書き込みスクリプトの変数を追加設定する。
    $aikotoba = "$form{'aikotoba'}";

    データチェックサブルーチンに以下を追加する。
    if($aikotoba ne $myaikotoba){
    &error("投稿で来ません!");
    }

    初期設定に合い言葉を設定する。
    $myaikotoba = "ハロー";

    スキン設定ファイルなどに合い言葉を記入するフォームを追加記述する。
    <tr>
    <td align=right nowrap><font size=2>合言葉</font></td>
    <td><input type="text" name="aikotoba" size="12"
    maxlength="200" value="" class=textarea><font size=2>「合言葉」 と記入してください。
    $showpass</font></td>
    </tr>

    フォーム説明文の「合言葉」のところには実際設定した合言葉を直接記入するか、
    「合言葉」の所に変数をそのまま$myaikotobaと記述して自動的に合い言葉を表示させるか、画像で合い言葉の文字を表示します。
    あるいは合言葉は別のページで教えます。
    $showpassは、ナビスの場合記述します。
「レンタルサーバーでのクロン設定の仕方」■ クロンcronが上手く動作しない。

トップページを定時にリニューアルする様なHTML式スクリプト等を動作させるのに、 多くのレンタルサーバーでもクロンを利用する事が出来ます。

《レンタルサーバーでのクロン設定のしかた。》
  • レンタルサーバーではクロン設定ファイルを直接設置しないで、クロン設定はサーバーの管理上で行います。 設置するのはクロンの対象となるクロンファイル(拡張子sh)と、動作させたいCGIファイルです。
  • クロン設定にはフルパスを記述するのであらかじめこれを調べておきます。
    以下のファイルをダウンロードし解凍し、fullpath.cgiを、ホームトップへ設置し、 パーミッションを例(755)に設定し、 ブラウザでアクセスするとフルパスを表示します。
    《fullpath.cgiをダウンロードする。》
  • クロンで動作させるCGIスクリプトに記述する相対パスは、 全てをサーバーのトップページからのパスに書き直す必要が有ります。
  • その理由によりクロンファイルも、動作させたいcgiファイルもホームページのトップディレクトリー へ設置する事をお勧めします。何故なら、他のディレクトリーで動作確認したスクリプトでも、 パスを書き換えずにそのままではクロンで動作しないからです。

    設置手順
    1. CGIスクリプトの設置
      動作させたいCGIスクリプトをサーバーのホームトップディレクトリーへ設置し、動作を確認します。
    2. クロンファイルの設置
      動作させたいCGIスクリプトファイルへのパスで指示する記述をしたクロンファイルを、 同じくホームのトップのディレクトリーへ設置します。

      ex;
      トップページへ設置したrenew.cgiを、動作させる場合。
      設置クロンファイル名;renew.sh
      パーミッション;755
      記述内容例;以下の3行。2行目のフルパスはサーバーにより違います。

      #!/bin/sh
      cd /home/its-market/public_html
      ./renew.cgi

    3. レンタルサーバーの管理モードでの設定
      動作させる時間の設定と、動作させるコマンド内容=「クロンファイルへのフルパスで動作指示」 の設定をします。

      設定のしかた スペースで区切って順に以下の項目を記述します。
      0から59で指定。「*」は毎分。
      0から23で指定。「*」は毎時
      1から31で指定。「*」は毎日
      1から12で指定。「*」は毎月
      曜日0から7で指定。0と7は日曜日「*」は全曜日
      コマンド実行コマンドやシェルスクリプト=クロンファイルへのフルパス
      複数の数字を設定する時は「,」で区切ります。
      2分毎や、2時間毎、は、「*/2」と記述します。

      あるサーバーでの記述内容例

      2,17,32,47 * * * * /home/its-market/public_html/renew.sh
      毎時2,17,32,47分にトップへ設置したrenew.shを動作の意味。

      動作結果をメールで受け取る事が出来ます。
      送る記述例;
      MAILTO = "メールアドレス"
      送らない記述例;
      MAILTO = ""
■ 欲しい機能が有るスクリプトが見つからない!

CGIについての話題はフォーラムで伺っております。

《フォーラム掲示板へGO!》

■ 当サイトへの連絡はメールフォームから送信して下さい。

《メールフォームへGO!》


Copyright (C) cgi-manual.com All Rights Reserved.