Top

ドメイン名入門
入門ガイド
管理ガイド基礎
[Email]
[FTP]
[Web]
  サーバーの設定
    設定ファイル
    MIME Type
    HTTP認証
    SSI
    CGI ディレクトリー
    Flash
    WAPプロトコル
  Subhost
    自動設定
    手動設定
  サーバー再起動
  サーバーログ
    ログ解析
   Urchin5 Index
  
 Urchin5インストール
   Urchin5 初期設定
   Urchin5 FAQ
    Analog
    AWStats
    http-analyze
    The Webalizer
    フォーマット
    Rotatelogsと     Savelogs
      サンプルファイル
    ログ整理
  Apacheモジュール
    mod_perl
    mod_php
    mod_dav
    mod_gzip
    mod_negotiation
  サーバー暗号化
    証明書
    デフォルト
    独自の証明書
      1.PrivateKey
      2.証明書取得
      3.インストール
      4.移動
      5.更新
      6.トラブル
  CGI
    CGI Library
      HTTP認証
      .htaccess
      Mail Form
      cgiemail
      comments
      counter
      guestlist
      iwhois
      lookup
      redirect
      tts
    独自CGI
  FrontPage
    インストール
    Subhost使用
  blog Nucleus
    インストール
  PukiWiki
    インストール
[Ports]
[Shell]
[User]
[iManager]
[CPX]
[Webmin]
管理上級編


v3
Top
v3
Start
v3
Email
v3
Ftp
v3
Web
v3
Ports
v3
Shell
v3
User
v3
Perl
v3
Java
v3
System
v3
CPX


独自 CGI スクリプトのインストールとデバッグ

本ページは 2008-04-01 更新されました


注意:以下のリンクが設定されているためこのサポートページでは /www/conf/httpd.conf と記述します。
FreeBSD では /www/conf/httpd.conf -> /usr/local/apache2/conf/httpd.conf
Linux では /www/conf/httpd.conf -> /etc/httpd/conf/httpd.conf

また、以下のリンクが設定されているためこのサポートページでは /www/logs/ と記述します。
FreeBSD では /www/logs/ -> /usr/local/apache2/logs/
Linux では /www/logs/ -> /var/log/httpd/


vps サーバーは、物理的な一台のサーバーとほぼ同等の自由度と能力を持つように設計されており、root 権限もあります。
そのため、目的に応じたカスタマイズが可能です。
その中には、独自開発あるいは第三者の開発した CGI スクリプトの利用も含まれます。

スクリプトが目的通り作動するためには、スクリプトファイルとそれに関連した全てのファイル、及びディレクトリーの所有権・実行権限が正しく設定されている必要があります。
全てのスクリプトファイルにわたって、オーナー (owner)、グループ (group)、ワールド (world) が、スクリプトファイルの実行権限を持っていなければなりません。
全てのスクリプトファイルのオーナー(ユーザー)及びグループは、apache の設定ファイル (/www/conf/httpd.conf) の SuexecUserGroup で指定されたユーザー及びグループと一致しなければなりません。
メインのホストの場合は、ユーザー、グループとも FreeBSD の場合は www、Linux の場合は apacheです。
サブホストの場合は、apache の設定ファイル (/www/conf/httpd.conf) の VirtualHost ディレクティブ内で指定されています。

Perl スクリプトでの注意点

  1. ASCII モードでアップロードしてください Perl スクリプトはテキストファイルです。
    テキストファイルは Virual サーバーにアップロードする場合、必ず、ASCII モードでアップロードする必要があります。
    ASCII モードでアップロードしないと、500 Server Error が発生します。
    文字コード EUC 日本語を含んだスクリプトをアップロードする場合、ローカルでのファイルの保存を改行 CR + LF で行ってからにしてください。

  2. Perl のパスは /usr/bin/perl です スクリプトの最初の行に、Perl のパスはを記載する必要があります。
    vps サーバーでの Perl 5 のパスは /usr/bin/perl です。
    Web 等で入手した、第三者の作成した、スクリプトを使う場合は、この点を特に注意してください。

  3. sendmail のパスは /usr/sbin/sendmail です コマンド名 command のパスは which command で調べられます。

500 Server Error を解決する

500 Server Error が発生した場合、最も簡単に原因を見つける方法は、web サーバーのエラーログを調べることです。
web サーバーのエラーログは一般には /www/logs ディレクトリー以下に error_log の文字を含んだファイル名で保存されています。
サブホストの場合の正確なディレクトリーとファイル名は、apache の設定ファイル (/www/conf/httpd.conf) の VirtualHost ディレクティブを調べてください。

以下の手段で、リアルタイムにエラーを確認することができます。
先ず、vps サーバーに SSH でログインし、 suroot になります。
tail コマンドを実行します。
エラーログのファイル名、ディレクトリー名は適宜読み替えてください。

  1. tail の実行

    # tail -f /www/logs/error_log

    tail コマンドは error_log ファイルの最後の部分に記載されているものを表示します。
    -f オプションをつけると error_log ファイルへの書き出しをリアルタイムに表示させることができます。

    Ctrl + C でリアルタイム表示から抜けられます。

  2. tail -fコマンドを実行した状態で、ブラウザから CGI スクリプトを再実行すると、エラーの原因が shell 画面に書き出されます。
    tail コマンドを実行中のコンソールでリアルタイムに確認することができます。

    典型的な CGI エラーと解決策

    • HTTPd/CGI: exec of [CGI PATH INFO] failed, errno is 2

      原因と解決策

      CGI スクリプトがインタープリターを特定できなかったというエラーです。
      スクリプトが Perl の場合、上記「Perl のパスは /usr/bin/perl です」で記述したように、正しい Perl のパスが使われているかどうかを確認してください。
      Perl のパスが正しい場合は、スクリプトを BINARY モードでアップロードしている可能性が大です。
      もう一度スクリプトを ASCII モードでアップロードしなおしてみてください。

    • HTTPd: malformed header from script [CGI PATH INFO]

      原因と解決策

      スクリプトが正しいヘッダーを書き出さなかったというエラーです。
      CGI が実行されたとき、CGI は web サーバーにメッセージを返します。
      このメッセージは header 部と body 部で構成されていなければなりません。
      header 部は典型的には content type として、body 部のデータの種類を指定します。
      header 部と body 部は空行で分離されていなければなりません。
      以下が事例です。

      
      Content-type: text/html
      
      
      
      <html>
      
      <head><title>Title</title></head>
      
      <body bgcolor="white">
      
      Hello world!
      
      </body>
      
      </html>
      
              

      malformed header from script エラーは、上記で述べたような正しいヘッダーをスクリプトが返さなかったというエラーです。
      Content-type にスペル間違い等の間違いがないか、正しいデータタイプが指定されているか(text/html 等)、空行が指定されているかを調べてください。

      スクリプトが異常終了している場合も、このエラーが表示されるケースがほとんどです。
      しかし、異常終了している場合は、tail コマンドを実行中のコンソールにこのエラー表示以前に、エラー発生行と、エラーの理由が表示されているはずです。

      こうした場合のより詳細な情報を得る手段が shell 上で直接スクリプトを実行してみることです。
      例えば、perl のスクリプト /www/cgi-bin/sample.cgi をテストする場合は以下のように行います。
      -cw オプションをつけて perl を実行することで詳細なエラー情報が得られます。

      perl -cw /www/cgi-bin/sample.cgi


SPEEDEX サポートポリシー

Copyright @ Cyber Vision Hosting Co., Ltd. All rights reserved.
Email: support@speedex.ne.jp


株式会社サイバービジョンホスティング提供サービス一覧
再販売用レンタルサーバーのSPEEDEX | VPS(仮想専用サーバー) | 共用サーバー | 独自ドメイン取得・運用 | SSLサーバー証明書 | ワイルドカードサーバー証明書 | SEO | Google Apps(TM) | クリエイティブワークの検索エンジン