通过命令行将GET / POST参数传递给php

时间:2014-02-18 16:06:25

标签: php .net command-line

我原谅自己behorehand因为我很确定那里会有一些明显的解决方案或答案,但经过相当广泛的搜索后我才能找到它。

我正在开发一个简化的Web服务器作为.net中的项目。我想做的是为每个HTML请求调用php.exe来执行文件中的任何php代码,然后将结果返回到我的服务器,在那里它将被提供给客户端。

这很简单,没有传递GET / POST参数,但我找不到让它工作的方法。

现在我将此作为我通过命令行编写调用php的函数

Public Shared Function phpparse(ByVal requesttype As String, ByVal argnames() As String, ByVal argvals() As String)
    Dim proc As Process = New Process
    proc.StartInfo.FileName = "php\php.exe"
    Dim B As New System.Text.StringBuilder
    B.Append("-B ""$_")
    B.Append(requesttype & " = array(")
    For i As Integer = 0 To argnames.Length - 1
        B.Append("'" & argnames(i) & "' => '" & argvals(i) & "', ")
    Next
    B.Remove(B.Length - 2, 2)
    B.Append(");"" -F script.php")
    InputBox("", "", B.ToString)
    proc.StartInfo.Arguments = B.ToString
    proc.StartInfo.UseShellExecute = False
    proc.StartInfo.RedirectStandardOutput = True
    proc.StartInfo.CreateNoWindow = True
    proc.Start()
    Return proc.StandardOutput.ReadToEnd
End Function

返回如下内容:

-B "$_GET = array('name' => 'John', 'email' => 'john.doe@no.com');" -F script.php

应该调用这个测试php脚本:

<html>
<body>

Welcome <?php echo $_GET["name"]; ?><br>
Your email address is: <?php echo $_GET["email"]; ?>

</body>
</html> 

但是在试图阅读答案时会遇到困难

2 个答案:

答案 0 :(得分:1)

使用php,你可以阅读这样的args:

<?php    
if (isset($argv)) {
    echo $argv[1]." ".$argv[2];
}
?>

这将返回

  

John john.doe@no.com

我真的不明白你如何发送命令行参数。 你应该运行像

这样的PHP
  

php.exe John john.doe@no.com

答案 1 :(得分:0)

我找到了解决这个问题的方法。我仍在寻找合适的解决方案,但我现在可以使用它

调用PHP CLI的参数应为

-r“$ arrayname = array('arraypar1'=&gt;'arrayval1','arraypar2'=&gt;'arrayval2',); require_once('C:\ fullroutetofile \ script.php');”

似乎你不能同时调用-B和-f,但require_once允许你绕过它。