我想要做的事情在理论上很简单,但我无法让它发挥作用。
我写了一个简单的node.js脚本,该脚本使用request
包来异步获取一些数据,解析它并将其作为html吐出。我想将这个脚本集成到我的客户端基于php和apache的网站上,该网站位于共享主机上,并遇到了一些障碍:
node-cgi
包,但它对我不起作用。我收到有关内部节点方法不存在的错误,我认为这个包已经过时了。所以我已经着手试图简单地从PHP调用节点。我的整个index.php
文件是:
<?php
header("Content-Type: text/html");
exec("node beerlist.nd", $output);
echo implode('', $output);
当我在命令行上执行php index.php
时,我得到了预期的输出,但是,当我尝试从浏览器访问它时,我什么也得不到Content-Length: 0
。为什么呢?
我想也许它与我的节点脚本的异步性质有关,但似乎该过程保持活着状态,直到它完成所有异步调用。那么我的php片段不应该毫无困难地将输出发送到浏览器吗?我在这里缺少什么?
编辑:我的节点脚本的要点是
var req = require('request')
req("http://mywebsite.com", function(err, resp, body) {
var output = // pull some interesting pieces out of the whole body
console.log(output);
});
我的output
变量的生成并不是此问题的核心。相关部分是我使用request
进行异步调用并使用console.log
输出结果......这可能是个问题吗?
答案 0 :(得分:7)
我认为Apache用户不知道node
命令是什么。如果我是正确的尝试写在PHP文件:
<full path to node> beerlist.nd
而不是
node beerlist.nd
获取终端which node