5

基本的に、私は「Webサーバー」からPHPを呼び出す方法を理解しようとしています。

ドキュメントを読みましたが、あまり役に立ちませんでした。

私の知る限り、PHPを呼び出す方法は3つあります。

  • コマンドライン経由(例php -f "/path/to/script.php":)
  • CGI経由(??)/ FastCGI経由(???)
  • Webサーバー(例:Apache)モジュール経由

それでは、 CGIから始めましょう。たぶん私は盲目ですが、仕様には、地球上でWebサーバーがCGIを実装するものにデータ(ヘッダーとコールバック)を渡す方法については言及されていません。FastCGIを使用すると、状況はさらに悪化します。

次に、サーバー固有のモジュールがありますが、すべてのリードがどこにも到達しないため、何を検索すればよいかさえわかりません。

4

2 に答える 2

7

CGIスクリプトの呼び出しは非常に簡単です。PHPにはいくつかの特徴がありますが、基本的には、環境変数のリストを設定してから、PHP-CGIバイナリを呼び出すだけです。

setenv GATEWAY_INTERFACE="CGI/1.1"
setenv SCRIPT_FILENAME=/path/to/script.php
setenv QUERY_STRING="id=123&name=title&parm=333"
setenv REQUEST_METHOD="GET"
...

exec /usr/bin/php-cgi

それらのほとんどは定型文です。SCRIPT_FILENAMEこれは、実際のphpファイル名をexecパラメーターとしてではなくPHPインタープリターに渡す方法です。PHPにとって重要なのは、非標準の変数でもありますREDIRECT_STATUS=200

GETリクエストの場合、必要なのは環境変数のみです。stdinPOSTリクエストの場合、実行されたphp-cgiバイナリに関してHTTPリクエスト本文をパイプするだけです。返さstdoutれるのは、不完全なHTTPヘッダー\ r \ n \ r\nとページ本文で構成されるCGI応答です。

(記憶から。もう少し落とし穴があるかもしれません。)

于 2011-08-13T00:07:37.860 に答える
1

FastCGIは非常に賢明に使用されているため、おそらく最良のオプションであり、言語に依存せず(たとえば、後でRubyにドロップすることもできます)、多く十分に文書化されています。

本当に必要な場合は独自のサーバーAPIを作成できますが、FastCGIを実装するよりも注意が必要であり、いくつかの欠点があります。

私はストレートCGIをまったく気にしませんが、FastCGIが存在するのには理由があります。

于 2011-08-13T00:05:10.083 に答える