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