首页 > 解决方案 > 如何设置我的服务器以使用 PHP

问题描述

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

我知道我可以使用 php.exe 运行脚本,但问题是它不适用于 php 会话。

标签: phphttpwebserverserver-side

解决方案


如果您在 Google 上搜索 CGI 规范,这将使您对要设置的环境变量有一个合理的了解。通常,您使用脚本文件名作为参数执行 php 进程,并为其提供新的环境变量。你熟悉 fork、exec* 系统调用吗?

它比这要复杂一些,因为它涉及到标准输入、输出和错误流。为了给你一个想法,请查看文件 libhttpd.c 中的thttpd 源代码,函数cgi_child

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

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

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

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


推荐阅读