C#:运行 shell 命令时出现问题

标签 c# php shell

我试图让 PHP 解析器运行一个页面,然后将结果返回到我的服务器,但是当我通过我的代码运行命令时,它什么也没有返回。我知道这个命令是正确的,因为如果我用相同的路径手动运行它,它就可以正常工作。这是我的代码:

var p = new Process
{
      StartInfo = new ProcessStartInfo("C:\\xampp\\php\\php.exe", path)
      {
            RedirectStandardOutput = true,
            RedirectStandardError = true,
            UseShellExecute = false,
            CreateNoWindow = true
      }
};
var output = new StringWriter();
var error = new StringWriter();
p.OutputDataReceived += (sender, args) => output.WriteLine(args.Data);
p.ErrorDataReceived += (sender, args) => error.WriteLine(args.Data);
p.Start();
p.BeginOutputReadLine();
p.BeginErrorReadLine();
p.WaitForExit();
if (p.ExitCode != 0)
{
      throw new Exception(string.Format(
          "PHP failed with the following output:{0}{1}",
      /* {0} */ Environment.NewLine,
      /* {1} */ error.GetStringBuilder().ToString()));
}
var res = output.GetStringBuilder().ToString();
Console.WriteLine(res);

编辑: 使用当前代码,它会在没有输出的代码中抛出异常。

最佳答案

设置工作目录路径

var p = new Process
            {
                StartInfo = new ProcessStartInfo("php", path)
                {
                    RedirectStandardOutput = true,
                    RedirectStandardError = true,
                    UseShellExecute = false,
                    CreateNoWindow = true,
                    WorkingDirectory = workingDir
                }
            };

关于C#:运行 shell 命令时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/817176/

相关文章:

c# - Azure 事件目录 |基于角色的授权

php - 验证是否选择了要在 codeigniter 中上传的文件

c# - 在 MessageBoxManager 上设置超时

c# - 组织 WinForm 控件代码

c# - 使用渲染器(世界空间)(Unity)在游戏对象周围绘制边界矩形(屏幕空间)

python - 将 python3 作为我在 Mac 上用于 Fish shell 的默认 python

Javascript 解释器取代 Python

php - 使用 ebay-sdk-php 的 XML 原始响应

php查询无结果

bash - 使用 --include 选项运行 grep 时出现奇怪的问题