私はウェブサーバーを書こうとしています。私はphp用のモジュールを書きたくなかったので、nginxやapacheのようにphp-fpmに情報を渡すことにしました。私はいくつかの調査を行い、プロトタイプをセットアップしましたが、動作させることができません。
接続ごとに print_r($GLOBALS) を行うポート 9999 でリッスンする php サービスをセットアップしました。PHPリクエストを127.0.0.1:9999に渡すようにnginxをセットアップしました。リクエストは渡されますが、argc (1) と argv (php サービスへのパス)、および $_SERVER 変数のみが入力されます。$_SERVER変数には、phpプロセスが動作している現在の環境に関する多くの情報がありますが、接続されているユーザーまたはその要求に関する情報はまったく表示されません-REMOTE_ADDR、QUERY_STRING、何もありません...
この情報をcliまたはプロトタイプサーバーからfastcgi phpプロセスに渡す方法に関するドキュメントを見つけるのに苦労しています。古い CGI vars のリストを見つけましたが、それらを渡す方法や、fastcgi で古いものがあるかどうかについての情報はありません。
繰り返しになりますが、サーバーのプロトタイプまたは cli から php-fpm または fastcgi プロセスに情報を渡す方法を尋ねています。または、この件に関する適切で明確で決定的なドキュメントをどこで見つけることができますか? (いいえ、RFC は答えではありません)。私は fastcgi.com と wikipedia だけでなく、他の多くの検索結果を読んでいます...
===更新===
PHPのプロトタイプを介して、動作するfastcgi「サービス」を起動して実行することができました。9999 でリッスンし、cli からのバイナリ fcgi リクエストを解析し、nginx からでも、バイナリ fcgi レスポンスをフォーマットし、ネットワーク経由で送り返します。cli はそれを正常に表示し、nginx はデコードされた fcgi レスポンスを自然が意図したようにブラウザ。
今、逆のことをしようとすると -- バイナリ fcgi パケットを形成し、それを PHP-FPM に送信するプロトタイプ サーバーを作成すると、cli またはエラー ログから何もエラーが出力されません (できる決して php-fpm にエラー ログに書き込ませてはなりません [-_-])。では、エラー テキスト、バイナリ ネットワーク パケット、またはその他のいずれかで、なぜ php-fpm が何らかの応答を返さないのでしょうか?
したがって、cli から fastcgi にデータを送信できますが、それが自分の fastcgi プロセスでない限り、何も戻すことができません (いいえ、私は php-fpm のポートを引き継いでいません - 私は 9999 で、それは9000 で)。
=============
ティア\m/(>_<)\m/