ホームページ  >  記事  >  運用・保守  >  Apache サーバーはどのようにして CGI の実行を可能にしますか?

Apache サーバーはどのようにして CGI の実行を可能にしますか?

(*-*)浩
(*-*)浩オリジナル
2019-11-30 11:30:385930ブラウズ

CGI (Common Gateway Interface) は、Web サーバーが外部コンテンツ生成プログラムと対話する方法を定義します。外部コンテンツ生成プログラムは、CGI プログラムまたは CGI スクリプトと呼ばれることがよくあります。これは、使い慣れたプログラミング言語を使用して、Web サイトに動的コンテンツを配置する簡単な方法です。

Apache サーバーはどのようにして CGI の実行を可能にしますか?

CGI を許可するように Apache を構成します

CGI プログラムが正しく動作するには、CGI の実行を許可するように Apache を設定する必要があります。これを行うにはいくつかの方法があります。

方法 1: ScriptAlias ディレクティブ (推奨学習: Apache サーバー)

ScriptAlias ディレクティブは、Apache に特定の目次。 Apache は、このディレクトリ内のすべてのファイルが CGI プログラムであると想定し、クライアントがその特定のリソースを要求したときにそれを実行しようとします。

ScriptAlias ディレクティブは次のようになります:

ScriptAlias "/cgi-bin/" "/usr/local/apache2/cgi-bin/"

Apache がデフォルトの場所にインストールされている場合、示されている例はデフォルトの httpd.conf 構成ファイルにあります。 。

ScriptAlias ディレクティブは、特定のディレクトリにマップする URL プレフィックスを定義するという点で Alias ディレクティブとよく似ています。 Alias と ScriptAlias は通常、DocumentRoot ディレクトリの外側のディレクトリで使用されます。

Alias と ScriptAlias の違いは、ScriptAlias には、その URL プレフィックスの下にあるすべてのものを CGI プログラムとして扱うという追加の意味があることです。

つまり、上記の例は、/cgi-bin/ で始まるリソースに対するリクエストはすべて、ディレクトリ /usr/local/apache2/cgi-bin/ で提供され、CGI プログラムとして扱われる必要があることを Apache に伝えます。

たとえば、URL http://www.example.com/cgi-bin/test.pl が要求された場合、Apache はファイル /usr/local/apache2/cgi-bin/ を実行しようとします。 test.pl を実行し、出力を返します。もちろん、ファイルは存在し、実行可能であり、特定の方法で出力を返す必要があります。そうでない場合、Apache はエラー メッセージを返します。

方法 2: ScriptAlias ディレクトリ外の CGI

セキュリティ上の理由から、CGI プログラムは通常、ScriptAlias ディレクトリに限定されます。このようにして、管理者は CGI プログラムの使用を誰に許可するかを厳密に制御できます。ただし、適切なセキュリティ予防策が講じられていれば、CGI プログラムを任意のディレクトリから実行できないという理由はありません。

たとえば、UserDir ディレクティブを使用して、ユーザーがホーム ディレクトリに Web コンテンツを保存できるようにすることができます。独自の CGI プログラムを持ちたいが、メインの cgi-bin ディレクトリにアクセスできない場合は、別の場所で CGI プログラムを実行できる必要があります。

任意のディレクトリで CGI を実行できるようにするには 2 つの手順があります。まず、AddHandler または SetHandler ディレクティブを使用して、cgi-script ハンドラーをアクティブにする必要があります。次に、ExecCGI を Options ディレクティブで指定する必要があります。

方法 3: オプションを使用して CGI の実行を許可する

メイン サーバー構成ファイルで Options ディレクティブを明示的に使用して、CGI の実行が許可されるように指定できます。 :

<Directory "/usr/local/apache2/htdocs/somedir">
    Options +ExecCGI
</Directory>

上記のディレクティブは、CGI ファイルの実行を許可するように Apache に指示します。また、どのファイルが CGI ファイルであるかをサーバーに伝える必要があります。次の AddHandler ディレクティブは、拡張子が cgi または pl のすべてのファイルを CGI プログラムとして扱うようにサーバーに指示します。

AddHandler cgi-script .cgi .pl

方法 4: ユーザー ディレクトリ

ユーザー ディレクトリでの使用を許可するには.cgi で終わるファイルで CGI プログラムを実行するには、次の構成を使用できます。

<Directory "/home/*/public_html">
    Options +ExecCGI
    AddHandler cgi-script .cgi
</Directory>

すべてが CGI プログラムとして扱われるユーザー ディレクトリの cgi-bin サブディレクトリを指定したい場合は、次のコマンドを使用できます。

rree

以上がApache サーバーはどのようにして CGI の実行を可能にしますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。