Windows では、次のレジストリ設定により、スクリプト インタープリターが Apache で使用されるように構成されます。
HKEY_CLASSES_ROOT\.cgi\Shell\ExecCGI\Command=C:\Perl\bin\perl.exe
これは Linux でどのように行われますか?
CGIスクリプトハンドラーについて話している場合。
これは各CGIスクリプトの最初の行に設定されており、ApacheのスクリプトハンドラーとしてTCLを頻繁に使用するため、次のように追加します。
#!/bin/tclsh
スクリプトの上にこの行を追加します。例:test.cgiは、誰かから要求されるたびにTCLシェルによって実行されます。
同様に、次のように設定できます
BASHの場合- #!/ bin / sh
また
PERLの場合- #!/ usr / bin / perl
注:シェルバイナリ実行可能ファイルのパスは、マシン上で上記とは異なる場合があります。次のコマンドを使用して検索します。
#which perl
また、Maxが提案しているように、ApacheがCGIスクリプトを許可するように構成されているかどうかを確認してください。このApacheチュートリアルリンクで同じ詳細な説明を見つけてください。
@Mohitの良い答えにもう少し情報を追加するには:
Unixは、多くの言語で多くのインタプリタを使用しています。それらのいくつかは「シェル」と呼ばれますが、ほとんどはシステムの単なる別のコンピューター言語です。実際、Javaバイトコードのコンパイル済みアセンブリであっても、すべてのファイルは特定の言語で記述されています。
ファイルの最初の数バイトは「魔法」です。OSにファイルの実行方法を指示します。最初の2バイトが「#!」の場合、OSはファイルにインタープリターが必要であることを認識しています。改行までの最初の行の残りは、実行するコマンドとして使用されます。行の最初の「単語」(スペースで区切られた非スペースのグループ)は、実行する絶対ファイル名として解釈され、他のすべての単語はコマンドライン引数として渡されます。最後のパラメーターは、実行しているファイルのファイル名です。
したがって、たとえば、最初の行が次のようになっている場合
#!/bin/tclsh
ファイル/home/user/aaa.tcl内
OSは、コマンドライン引数として/home/user/aaa.tclを指定して/ bin/tclshを実行します。
/bin/tclsh /home/user/aaa.tcl
より高度な例については、次のことを試してください。
#! /bin/env perl
/ home / user/myperlscript内
これにより、次のコマンドが実行されます。
/bin/env perl /home/user/myperlscript
/ bin / envは、PATH環境変数を使用して最初の引数を検索し、検出したプログラムを実行して、残りの引数をプログラムに渡すユーティリティプログラムです。envの助けを借りて、PATHを使用して通訳者を見つけることができます。
ScriptInterpreterSourceは Apache 構成設定であり、Windows でのみサポートされています。私は Linux で Apache を設定する経験はあまりありませんが、Script ディレクティブを確認する必要があると思います。
Linux にはレジストリがありません。また、Linux で Perl.exe を実行できるとは思えません。