我正在尝试编写一个网络服务器。我不想为 php 编写模块,所以我想我会像 nginx 和 apache 一样将信息传递给 php-fpm。我做了一些研究,并设置了原型,但无法让它工作。
我已经在端口 9999 上设置了一个 php 服务,它将在每次连接时打印_r($GLOBALS)。我已经设置 nginx 将 php 请求传递给 127.0.0.1:9999。请求正在传递,但只有 argc (1) 和 argv(php 服务的路径)和 $_SERVER 变量被填充。$_SERVER 变量有很多关于 php 进程正在运行的当前环境的信息,但我没有看到任何关于连接用户或他们的请求的信息 - 没有 REMOTE_ADDR,没有 QUERY_STRING,什么都没有......
我无法找到有关如何将这些信息从 cli 或原型服务器传递到 fastcgi php 进程的文档。我找到了一些旧 CGI 变量的列表,但没有关于如何传递它们的信息,或者它们中的任何一个是否已经过时使用 fastcgi。
所以,我再次问你如何将信息从你的服务器原型或 cli 传递到 php-fpm 或 fastcgi 进程——或者,我在哪里可以找到关于这个主题的正确、清晰和明确的文档?(不,RFC 不是答案)。我已经阅读了 fastcgi.com 和维基百科以及许多其他搜索结果......
=== 更新 ===
我已经设法通过 php 中的原型启动并运行一个有效的 fastcgi“服务”。它监听 9999,解析来自 cli 甚至来自 nginx 的二进制 fcgi 请求,它格式化二进制 fcgi 响应,通过网络将其发送回,cli 显示它很好,nginx 甚至将解码的 fcgi 响应返回给浏览器就像大自然的意图。
现在,当我尝试以另一种方式做事时——编写我的原型服务器,它形成一个二进制 fcgi 数据包并将其发送到 PHP-FPM,我什么也没得到——在 cli 或错误日志中没有错误输出(我可以永远不要让 php-fpm 以任何方式写入错误日志 [-_-])。那么,为什么 php-fpm 不给我某种响应,无论是错误文本,还是二进制网络数据包,或任何东西???
所以,我可以将数据从 cli 发送到 fastcgi,但我无法取回任何东西,除非它是我自己的 fastcgi 进程(不,我没有接管 php-fpm 的端口 - 我在 9999 上,它是9000)。
==============
TIA \m/(>_<)\m/