Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/338.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#PHP-CGI-调用phpinfo会使Web服务器崩溃_C#_Php_Cgi_Webserver - Fatal编程技术网

C#PHP-CGI-调用phpinfo会使Web服务器崩溃

C#PHP-CGI-调用phpinfo会使Web服务器崩溃,c#,php,cgi,webserver,C#,Php,Cgi,Webserver,我创建了一个简单的小型Web服务器,只用于处理GET请求。我还想添加PHP支持并管理它。但有一个问题: 每次我试图在.php文件中调用phpinfo(),我的服务器都会在“WaitForExit”进程中停止 我的PHP.ini设置应该很好,我为fastcgi使用调整了一切。有没有办法解决这个问题?问题是标准输出有一定的缓冲区大小。如果此缓冲区已满,则对标准输出的任何write()。现在,如果调用p.WaitForExit(),您将无限期地等待 解决方案是首先读取标准输出中的所有内容,然后调用Wa

我创建了一个简单的小型Web服务器,只用于处理GET请求。我还想添加PHP支持并管理它。但有一个问题:

每次我试图在.php文件中调用phpinfo(),我的服务器都会在“WaitForExit”进程中停止


我的PHP.ini设置应该很好,我为fastcgi使用调整了一切。有没有办法解决这个问题?

问题是
标准输出
有一定的缓冲区大小。如果此缓冲区已满,则对标准输出的任何
write()。现在,如果调用
p.WaitForExit()
,您将无限期地等待


解决方案是首先读取
标准输出
中的所有内容,然后调用
WaitForExit

可能是php模块存在缺陷。尝试禁用每个模块并逐个重新启用它们。如果首先执行
string sOutput=p.StandardOutput.ReadToEnd()和之后的
p.WaitForExit()?哈哈,谢谢vstm!结果很好!我把头撞在上面了,解决办法很简单!谢谢
 class FastPHP
    {
        private string _phpPath = @"C:\\Program Files (x86)\\PHP\\php-cgi.exe";
        Process p;

        public FastPHP(string filename)
        {
            p = new Process();
            p.StartInfo.FileName = this._phpPath;
            p.StartInfo.CreateNoWindow = true;
            p.StartInfo.Arguments = "-q \""+filename+"\"";
            p.StartInfo.RedirectStandardOutput = true;
            p.StartInfo.UseShellExecute = false;
        }

        public string getPHPOutput()
        {
            p.Start();
            p.WaitForExit();
            string sOutput = p.StandardOutput.ReadToEnd();
            p.Close();

            return sOutput;
        }
    }