在没有Apache(或其他网络服务器)的情况下在webserver"environment"中执行PHP

top*_*erg 5 php cgi

是否可以从不通过Web服务器与脚本连接的程序执行PHP代码?最初,我想到了CLI PHP解释器,但它不包含网站请求常见的任何$ _SERVER或$ _REQUEST变量.

那么,如果有可能效仿,那怎么可能被贬低呢?我没有考虑任何特定的编程语言,因为我确信在webservers和php之间存在一些与平台无关的通用接口.

这个问题的目的是构建一个可以作为Web服务器运行的Node.JS应用程序,然后(在需要时)可以执行PHP脚本(使用特定输入),获取响应,然后如果需要在输出上进行一些额外的处理,那么把它写给客户.

Pek*_*ica 3

除非您想为 Node.JS 构建 PHP 模块,否则我认为 CLI 是您唯一的选择 - 您可以通过命令行传递所需的变量,而且我想没有什么可以反对在脚本内重建它们:

php -f myscript.php /websites/myscript domain.com 1.2.3.4.5
Run Code Online (Sandbox Code Playgroud)

现在,理想的方法是获取这些参数并将它们写入变量,然后在脚本中使用。

如果您有一个使用 的现有脚本$_SERVER,并且不想重写它,那么这将是一个可行但不优雅的解决方法。$_SERVER(不优雅,因为通常不应该写入$_GET等。)

$_SERVER["REQUEST_URI"] = $argv[1];
$_SERVER["SERVER_NAME"] = $argv[2];
$_SERVER["REMOTE_ADDR"] = $argv[3];
Run Code Online (Sandbox Code Playgroud)

CLI:命令行使用

(我不太确定像这样覆盖服务器变量是否合理,感觉有点不对。但它在标准设置中肯定有效。我会问 PHP 聊天中的人他们的想法......编辑:没有人真的喜欢,但似乎没有什么大的缺点)