5

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

那么,如果可以效仿,又怎么能被模仿呢?我没有考虑任何特定的编程语言,因为我确信网络服务器和 php 之间有一些通用接口,这些接口独立于平台。

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

4

1 回答 1

3

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

php -f myscript.php /websites/myscript domain.com 1.2.3.4.5

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

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

$_SERVER["REQUEST_URI"] = $argv[1];
$_SERVER["SERVER_NAME"] = $argv[2];
$_SERVER["REMOTE_ADDR"] = $argv[3];

CLI:命令行使用

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

于 2013-01-24T12:32:18.577 回答