No.3ベストアンサー
- 回答日時:
CGIというのは、「Common Gateway Interface」の略になります。
webサーバがリクエストに応じてプログラムを呼び出す(実行する)ための仕組みです。
言語は対応さえしていれば何でもいいです。
webサーバ(例えばapache)に拡張子が.cgiというリクエストがきたら、プログラムを起動してねと設定しておきます。
このとき、拡張子は設定次第ですので、.phpでも構いません。
すると、リクエストのあったファイルを実行ファイルとして認識し、実行しようとします。
そしてその結果をリクエストにたいして返します。
このとき、そのファイルの冒頭に
#!/usr/bin/php
などと書いておくことで、そこに指定してあるものによって実行されます。
極端にいうと、指定してある拡張子のリクエストが来ると、webサーバはそのファイルを実行するようにOSに依頼する。
OSはそれがそのままで実行できるものなら実行するけど、phpファイルはただのテキストファイルなので実行できないが、冒頭に書いてあるPHP本体にそのファイルを渡して実行させる。
というようなイメージです。(イメージね)
これに対して、アップロードするだけでいいんじゃ?っていっているのは、webサーバのモジュールとして組み込んでいる場合になります。
簡単にいえば、apacheが/usr/bin/phpと同じようにPHPを解釈して実行できるようにapacheに機能を追加しているものです。
mod_phpですね。
これは別にPHPの専売特許ではなく、perl版、python版、ruby版など他にもあります。
CGI形式は、webサーバとは別にプログラムを起動して実行するので、
webサーバとは異なる権限で実行することも可能です(suexec)
ただ、別プログラムを起動し実行させるので、その分実行が遅くなります(リクエストの度に起動するので。予め起動しておいて、実行待ちにする方法もあります)
モジュール形式は、webサーバの機能の一部ですので、webサーバの権限で実行します。また、別のプログラムを起動する必要はないので、その分速くなります。
これらの設定はレンタルサーバで行われているはずなので、PHPファイルを解釈実行させるプログラムを冒頭で宣言しておくだけでCGIとして実行されます。
ご回答ありがとうございます。
初心者にはとてもわかりやすいです。モジュールの意味も恥ずかしながらわかっていなかったところなので、これだけ細かく説明していただけると助かります。
#!/usr/bin/php
の部分を記述したら動くようになりました!
ありがとうございました。
No.2
- 回答日時:
>ちなみに、CGIとPHPは違うものなのでCGIはOKでもPHPはNGもありえます。
CGIはシステム
PHPは言語
PHPをCGIモードで動かせばCGIプログラムとして動く。
PHPをモジュールとして動かせばCGIとして動きません。
No.1
- 回答日時:
phpができなかったとは、どういう結果から判断されましたか?
一般的には、拡張子がPHPのファイルなら大丈夫なはずです。
レンタルサーバーはPHPに対応している所ですか?
未対応の所をレンタルしてもPHPは動きませんよ。
ちなみに、CGIとPHPは違うものなのでCGIはOKでもPHPはNGもありえます。
貴方が判断できないのであれば、レンタルサーバーのURLもしくは作成したURLを書いて下さい。
この回答への補足
拡張子をPHPにしてできなかったので、!#/usr/bin/phpを行頭に挿入したら使えるようになりました。
レンタルサーバーは無料のORNを使用しています。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- ホームページ作成・プログラミング CGIが実行可能なHP領域又はレンタルサーバーでおすすめの所を教えてください 現在ホームページ領域の 1 2023/01/01 11:47
- PHP PHPの変わった閉じタグの必要性と意味を教えてください。 1 2022/08/28 15:15
- PHP WordpressのPHPを安全に編集する方法 1 2022/08/04 01:43
- PHP ECCUBE4のページ管理でPHPを実行させたい 1 2023/04/06 11:42
- CGI CGIで出力するhtmlの<!DOCTYPE html>等のタグは要りますか? 2 2023/02/05 21:26
- PHP PHP ページング データベース 1 2022/06/16 10:30
- PHP PHPで訪問回数を表示するカウンタを作成したい 3 2023/05/27 07:09
- MySQL MySQL,JavaScript,PHPコードの結果を表示する方法を教えてください。 1 2023/02/13 17:49
- PHP メールフォームのタイトルが文字化け 2 2023/06/17 12:00
- CGI (フリーの)ツリー掲示版CGI、昔は多用させてもらいましたが・・今セキュリティ上どうでしょう? 2 2023/06/25 07:18
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
htmlでsubmitで指定したAction...
-
別サーバのプログラムを起動
-
PHPからバッチファイルの実行
-
シェルスクリプトをPHPで動かそ...
-
ブラウザからexecコマンドを実...
-
サーバの作業の流れで質問です。
-
PHPから環境変数'PATH'が使えない
-
Prompt入力値をphp変数として取...
-
php実行中に実行中のphpファイ...
-
phpのftp関数でサーバーから他...
-
phpのshell_exec関数の動作に関...
-
PHPでMysqlにデータがあるかど...
-
PHPからCプログラムを実行して...
-
onedrive にexcelファイルをア...
-
VBSの「MsgBox」について
-
こちらはただの直列処理ですか?
-
複数ファイルを連続でダウンロード
-
パースエラーとは?
-
リンク先を隠す方法はないでし...
-
拡張子php画像をjpg画像等に変...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
mysql複数レコードをまとめて削...
-
php5-extensions を make でき...
-
php実行中に実行中のphpファイ...
-
ヒアドキュメントの中で演算子...
-
シェルスクリプトをPHPで動かそ...
-
phpからエクセルのマクロを実行...
-
PHPからバッチファイルの実行
-
query、prepare、executeの違い
-
PHPからCプログラムを実行して...
-
Switch文における、returnとbre...
-
PHPからlhaコマンドを使いたい
-
あるphpから他のPHPプロ...
-
CRON でPHPスクリプトをGET変数...
-
JSのWINOW.CONFI...
-
PHPの中間コード
-
別サーバのプログラムを起動
-
copy() で属性保存
-
phpスクリプトのみで定期実行
-
PHPで、C#のプログラムを実行す...
-
PHPからPostgreSQLのダンプを実行
おすすめ情報