2013-01-24 98 views
5

是否有可能通过不通过web服务器与脚本进行交互的程序执行PHP代码?最初,我想到了CLI PHP解释器,但它不包含网站请求常见的任何$ _SERVER或$ _REQUEST变量。在没有Apache(或其他网络服务器)的情况下在web服务器“environment”中执行PHP

所以,如果有可能效仿,那么如何应对呢?我没有用任何特定的编程语言来思考,因为我确信Web服务器和PHP之间会有一些共同的接口,它们将独立于平台。

这个问题的目的是建立一个Node.JS应用程序,可以作为一个网络服务器操作,然后(当需要时)可以执行PHP脚本(具体输入),获取响应,然后如果需要一些额外的处理输出,然后写入客户端。

回答

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: Command line usage

(我不是很肯定是否覆盖服务器的变量,比如这是犹太,但它肯定是在一个标准的设置中工作,我会问在PHP聊天的人他们认为...编辑:没有人真的喜欢它,但似乎没有任何主要的缺点)

+0

我在想如果我用过CLI方法,我将不得不序列化数据并通过参数进行解析,或者使用类似于memcache的东西。但是我确实认为我必须构建一个模块,但是如果有一个好的CGI节点模块可用,我会使用它(或者如果看起来更容易,我自己编码) – topherg

+0

@cgoddard是的。也许有人想出了一个基于模块的解决方案,*会*是最好的方式..虽然我猜这里没有任何对话memcache –

+0

那么你不需要整个数据列表,只是你想要的。 CGI是如何web服务器(如Apache)与PHP接口? – topherg

相关问题