CGIタイプのPHPとは・・・?

このQ&Aのポイント
  • CGIタイプのPHPは、拡張子が.cgiであり、中身はPHPの記述である。ただし、1行目に#!/usr/bin/php5のような記述が必要となる。
  • 普段使用している.phpはSSIタイプであり、拡張子を.phpまたは.php4とすることでPHPファイルとして処理される。また、拡張子が.phpsの場合は、PHPソースとして処理される。
  • PHP5を利用するためには、CGIタイプのPHPか、1行目に#!/usr/bin/php5のような記述を必要とする
回答を見る
  • ベストアンサー

CGIタイプのPHPとは・・・?

PHPのCGIタイプとはどのようなものなのでしょうか? 借りているレンタルサーバーで普段はxxx.php(xxxはファイル名) として使用していますが、このバージョンがphp4.2.2なのです。 それで、php5のコマンドを使用する必要性が出てきたのですが、当然、xxx.phpでは使用できません。 が、レンタルサーバーのマニュアルに、 「PHP5はCGIタイプで使用できます。SSIタイプではPHP4となります。PHP5をご利用の場合、PHP5で記述したスクリプトの一行目に#!/usr/bin/php5 または #!/usr/local/bin/php5 と記述して下さい。CGIタイプのPHPの場合、拡張子はCGIに準じます。」 とあります。 質問 1.このCGIタイプのPHPとは、拡張子が.cgiというだけで中身がphpの記述なのでしょうか?(しかし1行目に記述する#!/usr/bin/php5の記述はperlのような気もします)。 もしくはPHP5を利用したい場合はperlで記述するということでしょうか(意味不明ですが)?? 2.あと後学のために教えてほしいのですが、私が普段使用している.phpはSSIタイプとのことですが、マニュアルに 「SSIタイプのPHPの場合PHPファイルの拡張子を.phpまたは.php4にして下さい。これらの拡張子のファイルだけがPHPファイルとして処理されます。また、拡張子が「.phps」のファイルは、phpソースとして処理されます。」 とあります。これはhtmlコードの中に<?php~?>を記述できるからSSIタイプと言っているのでしょうか?(私は普段はphpコードでhtmlを生成しています)。 あと、phpソースとはどのような処理のことを言うのですか? 初心者的な質問ばかりですみません。どうしてもPHP5を利用したいのでお教えいただければと思います。 よろしくお願いします。

  • suffre
  • お礼率76% (2013/2633)
  • PHP
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
  • inu2
  • ベストアンサー率33% (1229/3720)
回答No.1

1.このCGIタイプのPHPとは、拡張子が.cgiというだけで中身がphpの記述なのでしょうか?(しかし1行目に記述する#!/usr/bin/php5の記述はperlのような気もします)。 もしくはPHP5を利用したい場合はperlで記述するということでしょうか(意味不明ですが)?? #!/usr/bin/php5 という記述はperl特有の書き方というものではありません perlをCGI動作させるときの記述です。 つまりPHPをCGI動作させるときにも必要な記述です 他の言語でもCGI動作させるときには必要な記述です 拡張子を.cgiにして中身はPHPです 2.あと後学のために教えてほしいのですが、私が普段使用している.phpはSSIタイプとのことですが、マニュアルに~ お考えのとおりです

suffre
質問者

お礼

ありがとうございます。CGIタイプのPHPとはそういう意味なのですね。どの解説サイトもCGIタイプ(CGI版)のPHPは.phpとなっていたので、私が利用しているサーバーのSSIタイプが一般のCGI版ということになりますね。非常にややこしくて迷ってしまいました。

関連するQ&A

  • Apacheでphpとcgiを使いたいのですが

    phpは問題なく使えましたが、cgiで問題があります。 今まではサーバーソフトにANHTTPDを使っていたのですが、phpを使う上で問題があったので汎用性のあるApacheに乗り換えました。するとphpはうまく動いた反面、cgiがうまく動作しなくなってしまいました。 ANHTTPDのときは、ローカルホスト以下のフォルダならどこであろうとcgiを含むすべてのファイルが使用できましたが、Apacheでは指定したフォルダ以下にcgiしか置けないみたいでした。そのフォルダ内にhtmlファイルなどを置くとアクセスできません。 この状態で使うとなると、cgiファイルだけその1箇所のフォルダ以下に集め、他のファイルを別のディレクトリに置かなくてはいけませんが、それでは1つのプログラムに必要なファイル類がバラけてしまうのでその方法は使いたくありません。 どうにかして1つのフォルダ以下でcgiとその他のファイルを扱えるように出来ませんでしょうか?また、僕が使っている今の方法では、cgiプログラムの1行目のパスを「C:/Perl/bin/perl」にしなくてはいけませんが、これもWebサーバー上にアップする際に書き換える手間がかかってしまいます。ANHTTPDの時は「/usr/bin/perl」「/usr/local/bin/perl」のような状態でも普通に使えました。この書き換えの手間を省く方法もありましたら情報いただければと思います。 以上です。 よろしくお願いいたします。

    • ベストアンサー
    • CGI
  • PHPをcgiとして使う方法がもしあったら教えて下さい!

    PHPをサーバーサイド言語でなくて、 一行目に #!/usr/bin/php などと書いて、 Perlと同じようにcgiとしてブラウザから使える方法 がもしあったら教えて下さい!

    • ベストアンサー
    • PHP
  • CGIが動きません

    uranai.cgiのパーミッションは755です。 #!/usr/local/bin/perlではなく #!/usr/bin/perlを使っていますが、 これはサーバの説明にありました。 下記URL内の3ファイルをCGIフォルダに格納して サーバにアップしましたが、エラーになります。 cgi-binにする必要はないとのサーバ設定の記述にありました。 動かない理由がお分かりの方は、ご教授いただけると幸いです。 よろしくお願いいたします。

    • ベストアンサー
    • CGI
  • CGI版PHP?

    よろしくお願いします 現在ローカルで Windows2000+Apache2+php4のPHPの実行可能環境を構築しています ところが、現在使用しているサーバーの1つが CGI版PHPというのかどうかわかりませんが 拡張子を.cgiにして1行目に #!/usr/local/bin/php-cgi-4.3.11 などを書いてPHPを実行する方法をとっています これだと、ローカルで構築したあとに拡張子を変えて リンクを変えて・・・と面倒なので 拡張子がphpでもcgiでも実行できる環境を構築できないかと思い 質問させていただきました 参考になるホームページなどがありましたら教えていただけないでしょうか?

  • SSI で #exec 以外で Perl-CGI を実行する方法は?

    最近 CGI に興味をもち Perl を始めました。 簡単なサンプルを無料サーバーにアップロードして cgi だけを 直接実行すると問題なく実行されます。 ですが SSI の #exec を使って HTML ソースに <!--#exec cgi="/cgi-bin/sample.cgi" --> と記述してページを開くと [an error occurred while processing this directive] と表示されてエラーになりました。 無料サーバーは infoseek で CGI/SSI は使えると書かれていたので 試してみました。それでもう一度確認の為に読んで見ると『#exec』は セキュリティ強化のため利用できないことが判明しました。 http://help.www.infoseek.co.jp/isweb/20602.html#7 質問内容: (1)CGI/SSI は使えるが #exec は使えない状況でどうやって Perl-CGI を   HTML ソースに記述して実行すればよいのか? (2)CGI は cgi-bin に置きパーミッションを 755 に設定しています。   設定は infoseek さんの指示通りです。他に設定すべき点ありますか? (3)Perl-CGI の1行目ではちゃんと『#!/usr/local/bin/perl』と記述しています。   こちらも infoseek さんの指示通りです。   Perl の記述で何か気をつけるべき点はありますか?バグ以外で。 (4)HTML ソースの拡張子は shtml にしています。   SSI を使うにはサーバーが対応していれば拡張子を変えるだけで使えるのですか? 今回の質問は Perl-CGI を HTML ソースに記述して実行する?には どうすべきかをお聞きしたいです。infoseek さんの情報は次のリンクです。 http://help.www.infoseek.co.jp/isweb/20601.html またネット検索していたら次のページを発見しました。 http://cocohome.hp.infoseek.co.jp/ssi/ ここの人は私と同じ infoseek で SSI 入門を書いています。 なぜこの方は SSI の #exec が使えるのでしょうか? この辺も知りたいです。 分かる方お願いします。 教えて下さい。

    • ベストアンサー
    • CGI
  • PHPをCGIとして実行する方法

    PHPをCGIとして実行する方法 現在PHP(モジュール版)にて開発を行っているのですが、 仕様上.htaccessを使用してcgi-binディレクトリ内にあるphpファイルをCGIとして 実行しなければならなくなりました。 下記の記述方法だと500エラーが発生してしまい、大変困っています。 <Directory "/usr/~(任意のcgi-binディレクトリのフルパス)~/cgi-bin"> AddType application/x-httpd-cgi .php </Directory> 因みに.htaccessはcgi-binディレクトリの1階層上に設置しています。 単に「AddType application/x-httpd-cgi .php」を記述する分には誤作動は起さないのですが、出来れば指定のディレクトリ内だけで指定したいと考えています。 もし思い当たる点がありましたら、ご教授お願い致します。 下記に環境を記しておきます。 【環境情報】 OS:FreeBSD 6.2(レンタルサーバ) PHP:5.2.4

    • ベストアンサー
    • PHP
  • HTML上(javascript)からCGIを実行する方法

    javascriptから外部実行ファイル(javascriptファイルではなくperlなどのCGI) を実行する方法を探しています。 下記のようにindex.htmとtest.cgiファイルを用意して、index.htm内の javascriptから外部cgiを実行させ、cgiの結果(test.cgiでは単に 『test』と表示するのみ)を表示したいと考えています。 利用増ですが、cgiやssiが使用できないサーバにindex.htmを置いて、 cgiが使用できるサーバ上のcgi結果を取得したいものです。 通常のcgiのように、1ページでcgi結果を表示するものではなく、 HTMLファイルの一部にcgi処理結果を表示させたいものです。 そもそも、SSIを使用しなければ下記のようなHTML内にcgiなどの 実行結果を表示する事は出来ないのでしょうか。 よろしくお願い致します。 ※下例のプログラムではcgi結果は表示されませんでした・・・。 ---<index.htm>---------------------------------------- <HTML> <BODY> <SCRIPT language="Javascript" src="http://xxx.xxx.xxx.xxx/test.cgi"></SCRIPT> </BODY> </HTML> ---<test.cgi>---------------------------------------- #!/usr/bin/perl print "test"

  • CGIの最初の記述

    つい先日、CGIをテキストエディタで開き編集をしていたところ最初にPerlの場所を示すパスらしきものが記述されていました。#!/usr/bin/perlみたいなのです。 そこで質問なのですが、/usr/bin/perlとはどこを示しているのでしょうか? 私、ウィンドウズPCでWWWサーバーを開設しておりますのでやはり気になってしまいます。それと言うのも、Apacheというソフトで開設しているのですがそのソフトでCGIを動かそうとすると、動かしたいCGIプログラムの最初の記述である/usr/bin/perlを私のサーバーのPerlをインストールしているフォルダへのルートに書き換えなくてはCGIが動かないからなんです。大変困っております。どうか、皆様私にお力をお貸し下さい。

    • ベストアンサー
    • CGI
  • CGI設置時に500エラーになります

    CGIを設置しようとしたところ、500 Internal Server Error になります。 共用サーバーIDを使用しています。 CGIファイルは「cgi-bin」の中に入れています。 たとえばこんな簡単なCGIでテストしたのですが、500 Internal Server Errorになってしまいます。 ↓ #!/usr/local/bin/perl print "Content-type: text/html \n\n"; print "Hello"; #!/usr/local/bin/perlを #!/usr/bin/perlにしても結果は同じです。 (サーバーの指定は#!/usr/local/bin/perl) パーミッションは755にしています(705に変えてもダメでした)。 CGIファイルの改行コードはLFにしており、テキスト(ASCII)モードでアップロードしています。 それでも500 Internet Server Errorになります。 サーバーではエラーログが見られないのでみなさんにお聞きしたいのですが、他にどんな原因が考えられるでしょうか?

  • CGIで外部のPHPを実行するには?

    ルートにあるCGIから例えばphpフォルダにあるsample.phpを実行するには、 下記のような感じで良いのでしょうか? **********************************  #!/usr/bin/perl  print "Content-type: text/html\n\n";  print "sample.phpの実行\n<br>";  system 'php/sample.php';  exit; ********************************** 宜しくお願い致します。

    • 締切済み
    • CGI