我正在用C#编写Web服务器,我正在尝试添加对PHP的支持。我主要使用它,除了我不知道如何在将文件传递给它时将GET和POST数据传递给PHP可执行文件。我一直在使用GET进行测试,因为我还没有得到在服务器上处理的POST请求,并且我将传递的参数字符串分开,但我不知道如何将信息提供给php解析器。一些提示将不胜感激。
答案 0 :(得分:5)
对于GET: 简单的方法(我发现):
php-cgi.exe <script-file-name> <parameter1>=<value1> <parameter2>=<value2> [...] <parameterN>=<valueN>
更难的方式(通过php-cgi和windows cli)将是:
SET "QUERY_STRING=<parameter1>=<value1>&<parameter2>=<value2>&[...]&<paramterN>=<valueN>"
SET SCRIPT_NAME=<script-file-name>
SET REQUEST_METHOD=GET
SET REDIRECT_STATUS=0
php-cgi.exe
我假设有一种方法可以通过C#/ .Net设置环境变量。在php-cgi.exe完成后,必须取消设置环境变量。
您可以在http://www.ietf.org/rfc/rfc3875.txt设置的CGI环境变量(以及一般的CGI)的更多信息。也可能是PHP的$ _SERVER变量文档。在PHP.net的PHP文档中运行PHP作为CGI的安全注意事项。
答案 1 :(得分:1)
您熟悉CGI吗?这通常是Web服务器如何执行任意外部程序。
CGI当然有更多现代替代品,但(几乎)今天每个网络服务器和外部程序都将支持CGI。
答案 2 :(得分:1)
如果您在bash
或类似的shell中,请尝试以下操作:QUERY_STRING="fruitKind=apple&basketId=1000" php -q foo.php
。
答案 3 :(得分:0)
答案 4 :(得分:-1)
您是否考虑将GET / POST数据作为STDIN传递给PHP可执行文件?即。
system(“echo”.GETOrPOSTData。“&gt; foobar.php”);