在Node.js Web服务器中执行PHP脚本


73

要使Node.js Web服务器功能(如Apache)执行PHP脚本,需要执行哪些步骤?有什么方法可以将PHP集成到Node.js中?

注意:我不想直接在Node.js中执行PHP脚本,而是通过Apache实例或类似的东西“路由”。

Answers:



70

我有同样的问题。我尝试通过外壳接口调用php,并产生了所需的结果:

var exec = require("child_process").exec;
app.get('/', function(req, res){exec("php index.php", function (error, stdout, stderr) {res.send(stdout);});});

我确信这在推荐的做法列表中并不算高,但是它似乎可以满足我的要求。另一方面,如果您不想直接从Node.js执行PHP脚本,而是想要从另一个Web服务器中继PHP脚本,那么这似乎可以解决问题:

var exec = require("child_process").exec;
app.get('/', function(req, res){exec("wget -q -O - http://localhost/", function (error, stdout, stderr) {res.send(stdout);});});

3
聪明的主意。谢谢。

如何将参数从Node JS传递到PHP脚本?
Visal Sambo

exec(“ php index.php'param1''param2'”)
Vivek Kapoor

7

在这里看看:https : //github.com/davidcoallier/node-php

从他们的阅读中我:

在Node.js上运行的嵌入式PHP服务器

担心,非常担心。该名NodePHP的名字来自一个事实,即我们正有效地将一个不错的Node.js服务器为FastCGI接口与PHP-FPM相互作用。

这是omega-alpha-super-beta-proof-of-concept的概念,但它已经运行了一些简单的脚本。在我为PHP开发人员进行的关于Node.js的演讲中,大多数工作都是完成的,这原来是一个非常有趣的项目, 当我们决定发布允许人们无需Apache即可运行PHP的Inline PHP服务器时,我们 很有可能与Orchestra一起使用。 Nginx或任何Web服务器。

是的,这与Node.js的所有思想和概念背道而驰,但其思想是能够直接从任何工作目录创建Web服务器,以使开发人员能够比以前更快地进行开发。无需创建虚拟主机或服务器块,也无需修改/ etc / hosts。


npm上的node-php是一个完全不同的项目: github.com/mkschreder/node-php,对我来说很棒。
布赖恩·拉尔森

6

您可以使用SPHP节点模块,与任何Web服务器一样运行PHP。
它兼容但不依赖于快递。
它还在HTTP端口上支持websockets请求。
它在小负载下偏向于速度,而不是节省资源。

要安装在节点中:

npm install sphp

在您的应用中:

var express = require('express');
var sphp = require('sphp');

var app = express();
var server = app.listen(8080);

app.use(sphp.express('public/'));
app.use(express.static('public/'));

有关更多信息,请参见https://github.com/paragi/sphp

我也有点偏见,因为我是作者:)


在示例中多次切换页面(转到PHP <=>转到HTML)时:致命错误:第30行的node_modules \ sphp \ php_worker.php中的执行时间超过了30秒的最大执行时间
Codebeat

请在github上提交错误关系。我很乐意提供帮助。
西蒙·里杰(SimonRigét)'18年

4

您可以尝试实现直接链接节点-> fastcgi-> php。在上一个答案中,nginx使用http-> fastcgi序列化-> unix套接字-> php提供php请求,并将节点请求作为http-> nginx反向代理-> node http服务器。

目前看来,node-fastcgi paser可用,但仅可用作节点fastcgi后端。您需要采用它作为php fastcgi服务器的fastcgi客户端。


2

在我看来,一种简单,快速的方法是为此使用dnode-php

您可以在此处看到简要介绍。简单,快捷,容易!





By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.