C# PHP-CGI with cookie support

本文关键字:support cookie with PHP-CGI | 更新日期: 2023-09-27 18:01:49

我试图创建一个web服务器,它的工作与HTML,图像…但我想实现PHP,我有一个PHP- cgi的工作实现,但它不能与file_get_contents和cookie一起工作。我想知道有没有办法解决这个问题?

private string ProcessPHP(string phpPath, CookieCollection cookies)
{
    Process CGI = new Process();
    CGI.StartInfo.FileName = "php''php.exe";
    CGI.StartInfo.CreateNoWindow = true;
    CGI.StartInfo.Arguments = "-q '"" + phpPath + "'"";
    CGI.StartInfo.RedirectStandardOutput = true;
    CGI.StartInfo.UseShellExecute = false;
    CGI.Start();
    string OutputText = CGI.StandardOutput.ReadToEnd();
    CGI.WaitForExit();
    CGI.Close();
    return OutputText;
}

我知道我没有对CookieCollection做任何事情,但是我想知道如何使用它。

谢谢!

C# PHP-CGI with cookie support

这是一个老问题,但是目前windows版本的php附带了一个单独的php-cgi.exe。这是你必须运行的可执行文件。

使用CGI,脚本信息和请求头通过环境变量发送,例如:

CGI.StartInfo.info.EnvironmentVariables["SCRIPT_FILENAME"] = @"c:/wwwroot/index.php";

更详细的示例请参见https://en.wikipedia.org/wiki/Common_Gateway_Interface

HTTP头(如cookies)也通过环境变量发送。以'HTTP_'为前缀,破折号转换为下划线:

CGI.StartInfo.info.EnvironmentVariables["HTTP_COOKIE"] = ...

如果您的请求体包含数据,您必须设置CONTENT_LENGTH环境变量,并在启动进程后将数据写入CGI.StandardInput