我正在尝试创建一个WebServer,它正在使用HTML,Images ... 但我想实现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做任何事情,但我想知道如何使用它。
谢谢!
答案 0 :(得分:0)
这是一个老问题,但目前 php 的 windows 版本带有单独的 php-cgi.exe
。这是您必须运行的可执行文件。
使用CGI,脚本信息和请求头通过环境变量发送,即:
CGI.StartInfo.info.EnvironmentVariables["SCRIPT_FILENAME"] = @"c:/wwwroot/index.php";
更详细的例子见https://en.wikipedia.org/wiki/Common_Gateway_Interface
诸如 cookie 之类的 HTTP 标头也通过环境变量发送。它们以 'HTTP_'
为前缀,破折号转换为下划线:
CGI.StartInfo.info.EnvironmentVariables["HTTP_COOKIE"] = ...
如果您的请求正文包含数据,您必须设置 CONTENT_LENGTH
环境变量,并在启动进程后将数据写入 CGI.StandardInput
。