タイトル画像
サイトタイトル画像

CGIが動かない人のためのまとめ

では「 CGI 」を Web 上に「転送」して稼動させるにはどうしたら良いでしょう。

通常通り「 FFTP 」を用いて「転送」しても稼動することはありません。

「 CGI 」を稼動させるには「パーミッション」と言う概念が必要になってきます。

(1)「パーミッション」とは何か。

「パーミッション」とは簡単に言えば「許可を制限」するものです。

まだ良く分からないと思います。

具体的に説明すると、Web 上に転送した時点でWeb ページの閲覧者は「 3 つ」に分かれます。

  • そのWeb ページの所有者(自分)
  • そのドメイン( URL )共有のグループ
  • 全くの他人、その他

この概念は分かりますか?

「だからどうした。」と思われるかもしれません。

通常「Web ページ」を「転送」した場合は

  • 他人が『書き込み』と『実行』を行う必要性

は全く有りません。しかし「掲示板CGI 」などは

  • 他人でも『実行』できる必要性
  • 他人でも『書き込み』ができる必要性

があります。

「パーミッション」という概念

「パーミッション」は 3 桁の数字で表されており、2 進数によって分類されています。

  • 3 桁目が「オーナー(自分)」に対しての「パーミッション」設置値
  • 2 桁目が「グループ」に対しての「パーミッション」設置値
  • 1 桁目が「他人」に対しての「パーミッション」設置値

図を見て分かるように「呼び出し」を 4 点、「書き込み」を 2 点、「実行」を 1 点とします。

「呼び出し」「書き込み」「実行」を全て許可する場合は合計した「 4+2+1 」の「 7 」が設定値となります。

例えば「 755 」などは

  • 自分は「呼び出し」「書き込み」「実行」を全て許可
  • グループは「呼び出し」と「実行」する。
  • 他人は「呼び出し」と「実行」する。

と言う意味だと分かります。

(2)「 FFFTP 」を利用した「パーミッション」の設定方法

まずは「 FFTP 」を利用して「 CGI 」も「転送」を行います。

ここで問題なのは、「パーミッション」が緩くなるので「『フォルダを指定』しているサイトがほとんど」だと言うことです。

通常「 CGI 」は「 cgi-bin 」と言うディレクトリを作成して、その中でしか実行できないように制限されています。

しかしサイトによっては「ディレクトリ名」が異なることがあるので、調べておきましょう。

ここでは「転送」した後の「パーミッション」の設定方法を説明します。

まず、転送した CGI ファイルに対して「右クリック」をします。

そして「属性変更」を選択しましょう。

すると次のような「ウィンドウ」が開きます。ここで「パーミッション」の設定を行うことが出来ます。

通常なら「 755 」か「 705 」、「 701 」などに設定を変更します。

ですが、サイトによって全くパーミッションの設定が異なっているのが現状です。

サイトのパーミッション設定を確認するか、色々パーミッションを変えてみましょう。

また、 CGI ファイルのある「ディレクトリ」に対してもパーミッションを変更する必要があります。

(3)それでも「 CGI 」が動かない人へ…

はじめて「 CGI 」を動作させるときは、まず動きません。

まず、以下のチェックをしてみましょう。

  • CGI 自体が最初から動かない

あなたのサイトでは「 CGI 」は稼動しますか?もう一度規約を読み直しましょう。

また、「 Perl5 」とそれ以前のプログラムは多少違います。

どこまでのバージョンを使用できのるか確認する必要もあります。

  • プログラム自体が最初から動かない

「プログラム自体のバグ」の可能性があります。もしはじめてなら、「 Hello! World 」のサンプルを利用してみましょう。

  • ディレクトリの位置は間違っていないか

「 cgi-bin 」や「 cgi 」という所定のディレクトリの中にいるか確認しましょう。

  • パスは間違っていないか?

これは重要です。再度確認しましょう。

CGI ファイルの 1 行目が所定のパスになっていることが大切です。

家庭内サーバで自作した人は

#!c:/perl/bin/perl

となっていないか確認しましょう。

  • 「パーミッション」は間違っていないか

最も多いミスです。
「このサイトでは CGI はパーミッション『 701 』で設定してください」と書いているのに、「 755 」などにしていたのでは稼動しません。

  • 「 .htaccess 」を作成したか

時々あるミスです。
サイトによっては「 CGI 」は許可していますが、「 .htaccess 」と言うファイルを作成して CGI ファイルと同じディレクトリに置いておく必要がある場合もあります。

  • プログラム内に許可されていないコマンドが含まれていないか

これは少ないと思います。最近は「 sendmail 」などは使用できなくなりました。このようなものを利用しようとすると CGI がエラーとなる場合もあります。

大体「 CGI 」が稼動しない理由としてはこのくらいだと思います。

スポンサードリンク

オススメ書籍

HTML5、CSS3、JavaScript等の学習に役立つ書籍を紹介します。

人気コンテンツ

    Copyright ©2015 .(since )