gpt4 book ai didi

php - 从虚拟/自定义 "web server"调用 PHP

转载 作者:可可西里 更新时间:2023-11-01 13:51:11 26 4
gpt4 key购买 nike

基本上,我正在尝试弄清楚如何从“网络服务器”调用 PHP。

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

据我所知,可以通过三种方式调用 PHP:

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

那么让我们从CGI开始吧.也许我只是瞎了眼,但规范并没有提到 Web 服务器到底是如何将数据( header 和回调)传递给实现 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

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

(仅凭内存。可能还有一些陷阱。)

关于php - 从虚拟/自定义 "web server"调用 PHP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7047426/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com