我正在尝试创建一个WebServer和它的工作与超文本标记语言,图片...但是我想实现PHP,并且我有一个可以工作的PHP-CGI实现,但是它不能处理像'file_get_contents‘和cookies这样的东西。我想知道有没有办法解决这个问题?
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做任何事情,但我想知道如何使用它。
谢谢!
发布于 2021-04-07 17:49:21
这是一个老生常谈的问题,但目前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。
https://stackoverflow.com/questions/38877166
复制相似问题