• ベストアンサー

CGI版PHPについて

一般的なPerlのCGIが実行可能な状態のApache(Linux上)にCGI版のPHPを追加インストールした場合、ApacheはスクリプトがPerlであるかPHPであるかの違いをどう認識するのでしょうか? 方法1 スクリプトはどちらも*.cgiとして作成し、スクリプト内先頭行のperlやphpへのパスの記述で認識する 方法2 perl→*.cgi php→*.php のようにhttpd.confや.htaccessで設定する 初心者のためこの二つくらいしか思い浮かばないのですが、どちらかが正解だったりしますか??

質問者が選んだベストアンサー

  • ベストアンサー
  • hrm_mmm
  • ベストアンサー率63% (292/459)
回答No.2

通常cgi 実行というのは、スクリプトファイルの1行目で、プログラム言語を指定する方法を指すと思います。毎回プログラム言語本体の起動を行うので、その分の負荷は掛かりますが、スクリプトエラーで、apacheに影響することは少ないです。 perlに限らず、シェル言語やphpなどそのサーバー内で起動権限のあるプログラムなら、どれでも使えます。つまり、Apacheが言語を認識するのではなく、一行目の記述通りに実行しようとするだけです。 httpd.confでは、ディレクトリのOptionsディレクティブにExecCGIオプションと AddHandler cgi-script .cgi の設定だけの場合は、こちらです。 方法2の、httpd.confで拡張子とプログラム言語の関連付けを設定する方法は、modperlとか、phpではapacheモジュールで動作させるときの方法です。プログラムの起動は、apache起動時の一回なので起動時間の重複が無くなりますが、スクリプトエラーで、apacheに即影響します。 また、拡張子とプログラム言語本体との関連付けが固定されてるので、その拡張子では、他の言語(または、別version)のプログラムを実行できません。 どちらが正解とかではなく、どのような動作を望んでいるかで決まるでしょう。 お使いのサーバーにどのようにインストールして、どういう設定をしてあるのかが問題ですね。 自分のパソコンのローカルサーバーでの話なら、phpやApacheのバージョンおよびhttpd.confや.htaccessの関連設定部分を提示すれば、もっと詳しく教えてくれる人がいるでしょう。 レンタルサーバーなら、そのサーバーのサイトにプログラム設置に関する説明があると思いますので、よく読んで設置して下さい。

MAT335
質問者

お礼

ありがとうございました。

その他の回答 (1)

  • SAYKA
  • ベストアンサー率34% (944/2776)
回答No.1

思いつくもなにも httpd.conf または .htaccess によってその拡張子が何に関連づけられてるか定義しないと例え「.cgi」であっても動作しないよ。 「通常は」cgiはperlで駆動するようにhttpd.confに書かれてるけれど似たような事をするだけ。 「.cgi」に割り当てたいならperlは諦めるしかないね

MAT335
質問者

補足

ありがとうございます。 説明不足でした。 既にperlはCGIとして*.cgiで動作する状態になっていて、そこにCGI版のPHPを新たにインストールした場合、という条件でした。 いただいたアドバイスだと、CGI版のPHP側は*.phpで記述する、という形であれば「方法2」で可能と考えていいものなんでしょうか?

関連するQ&A