小编典典

从虚拟/自定义“ Web服务器”调用PHP

php

基本上,我试图弄清楚如何从“ Web服务器”调用PHP。

我已经阅读了文档,但是并没有太大帮助。

据我所知,有三种方法可以调用PHP:

  • 通过命令行(例如:php -f "/path/to/script.php"
  • 通过CGI(??)/通过FastCGI(???)
  • 通过网络服务器(例如:Apache)模块

因此,让我们从CGI开始。也许我只是瞎子,但规范中并未提及网络服务器在地球上如何将数据(标头和回调)传递给实现CGI的事物。使用FastCGI时情况甚至更糟。

接下来,我们有特定于服务器的模块,由于所有线索最终都无处可寻,我什至都不知道要搜索什么。


阅读 193

收藏
2020-05-29

共1个答案

小编典典

调用CGI脚本非常简单。PHP具有一些特性,但是您基本上只需要设置一个环境变量列表,然后调用PHP-CGI二进制文件:

setenv GATEWAY_INTERFACE="CGI/1.1"
setenv SCRIPT_FILENAME=/path/to/script.php
setenv QUERY_STRING="id=123&name=title&parm=333"
setenv REQUEST_METHOD="GET"
...

exec /usr/bin/php-cgi

他们大多数都是样板。SCRIPT_FILENAME这是您如何将实际的php文件名传递给PHP解释器,而不是作为exec参数。对于PHP来说,至关重要的也是非标准变量REDIRECT_STATUS=200

对于GET请求,您仅需要环境变量。对于POST请求,您只需将HTTP请求主体stdin传递给已执行的php-
cgi二进制文件即可。返回的stdout是CGI响应,由不完整的HTTP标头\ r \ n \ r \ n和页面正文组成。

(仅从内存即可。也许还有更多陷阱。)

2020-05-29