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做任何事情,但是我想知道如何使用它。
谢谢!
这是一个老问题,但是目前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
。