基本上,我试图弄清楚如何从“ Web服务器”调用PHP。
我已经阅读了文档,但是并没有太大帮助。
据我所知,有三种方法可以调用PHP:
php -f "/path/to/script.php"
因此,让我们从CGI开始。也许我只是瞎子,但规范中并未提及网络服务器在地球上如何将数据(标头和回调)传递给实现CGI的事物。使用FastCGI时情况甚至更糟。
接下来,我们有特定于服务器的模块,由于所有线索最终都无处可寻,我什至都不知道要搜索什么。
调用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。
SCRIPT_FILENAME
REDIRECT_STATUS=200
对于GET请求,您仅需要环境变量。对于POST请求,您只需将HTTP请求主体stdin传递给已执行的php- cgi二进制文件即可。返回的stdout是CGI响应,由不完整的HTTP标头\ r \ n \ r \ n和页面正文组成。
stdin
stdout
(仅从内存即可。也许还有更多陷阱。)