我原谅自己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>
但是在试图阅读答案时会遇到困难
答案 0 :(得分:1)
使用php,你可以阅读这样的args:
<?php
if (isset($argv)) {
echo $argv[1]." ".$argv[2];
}
?>
这将返回
John john.doe@no.com
我真的不明白你如何发送命令行参数。 你应该运行像
这样的PHPphp.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允许你绕过它。