我正在使用Csharp开发一个Web服务器,我想在其上安装php编译器。
当前状态:Web服务器正在工作并接收连接,可以编译PHP页面,我正在使用procces start
调用PHP编译器,我可以像这样arg发送GET参数:
php.exe name=1 /index.php
问题是如何以更好的方式向编译器发送post,get data和HTTP header?
答案 0 :(得分:0)
在命令行界面上传递HTTP标头确实有一个相当神圣的解决方案:-B
或--process-begin
标志允许在相关脚本之前运行代码。这可用于将数据注入$_SERVER
超全局数组以模拟正在设置的标头。例如。要设置X-Foo: bar
,您可以运行:
php.exe --process-begin '$_SERVER["HTTP_X_FOO"] = bar;' /index.php
$_GET
和$_POST
超全球可以做同样的事情。然而,这真的只是一个黑客,出于安全原因,我不能在学术环境之外推荐这个。
更好的方法是利用builtin webserver。如果你的编码足够干净,那么将传入的请求重新路由到PHP并将结果反馈回来应该没有问题。但是,如果您不需要任何虚拟主机,这将只能完美地工作。和上面的解决方案一样,这在研究之外没有其他地方!
绝对正确的方法是实施Common Gateway Interface。 PHP本身带有一个CGI接口,因此对它说CGI是trivial。如果遇到可伸缩性问题,可能需要切换到FastCGI。可以找到示例实现here。
最后一件事:PHP是一种解释语言,而不是已编译的语言。