如何设置我的服务器以使用 PHP

How do I set up my server to work with PHP

我想将 PHP 与我自己编码的服务器一起使用。 (不是 Apache 等)我想我必须将 http 请求和一些额外的数据从我的服务器发送到 php,但我不知道如何建立连接以及如何格式化该消息。

我知道我可以 运行 使用 php.exe 编写脚本,问题是这样它无法使用 php 会话。

如果您Google 支持 CGI 规范,这将使您对设置哪些环境变量有一个合理的想法。通常您使用脚本文件名作为参数执行 php 进程,为其提供新的环境变量。您是否熟悉 fork、exec* 系统调用?

它比那复杂一点,因为它涉及摆弄标准输入、输出和错误流。为了给您一个想法,请查看文件 libhttpd.c 中的 thttpd source code,函数 cgi_child.

如果您的服务器源代码不是用 C 或 C++ 编写的,您将不得不四处寻找生成一个 child 进程来处理在您的服务器中调用的 PHP 脚本,并发送输出到浏览器。其中一些输出将是 HTTP headers,它可能会在此之后停止执行(例如 HTTP 2xx 无内容,HTTP 3xx 重定向),在这种情况下,您可以使用 \r\n\r\n 将其发送回浏览器以终止输出。

要将信息发送到 PHP 进程,只需设置环境和可能的参数变量,除非进程读取您设置的环境变量 SCRIPT_FILENAME(请参阅 CGI 环境变量)。切换到二进制文件所在的目录或文档根目录,以有意义的为准,并在生成之前处理传入数据(例如来自 POST 请求)并让生成的进程从标准输入(来自 php-fpm, 它可能从您设置的套接字中读取,但不完全确定,所以这留作练习)。

运行 或生成 php-cgi 可能更容易,后者是 php-fpm,它会侦听默认或指定的地址和端口。 运行 php-fpm -h 选项并试一试。我认为这绝对是获得 session 支持的方式。还要确保进程知道在哪里寻找 php.ini 文件。

除了 CGI 规范外,阅读有关 HTTP 的所有内容也会很有帮助。或者至少是其中的一大块。