有没有一种方法,能让node.js跑php?
 发布于 13 年前  作者 nigary  16989 次预览  最后一次回复是 8 年前  来自  

就像apache、nginx一样,感觉node解释其他语言没什么压力吧。

28 回复
leetom

Why? Node又不是web server

nigary

好玩呗,管他是什么呢。

jiyinyiyong

Github 搜到有一个像的, 不过好久没维护了
https://github.com/davidcoallier/node-php

cattail2012

想到一种很简单的方法:通过child_process调用命令行php,直接执行某个php文件

sunshine1988

直接在命令行可以执行PHP~~

sunshine1988

跟NodeJS一样 有repl模式~~

cattail2012

@sunshine1988 但是他想要通过nodejs作为服务器跑,如果直接命令行,就不能接受web请求了

leizongmin

@cattail2012 用php-fpm嘛,实现该通讯协议就行了

leizongmin

写个编译器把PHP编译成js代码。。。。。太伟大了

cattail2012

这么麻烦,难道php有那么好吗,还不如写一个amazing的nodejs web framework直接赶超php呢

fish

哈哈哈,互相意淫~ 。 php有个 php-v8 , php 跑 node

leizongmin

@cattail2012 新写的框架没有可用的应用程序嘛,如果能直接转换PHP代码,网上就可以得到一大堆的应用了

cattail2012

@leizongmin 那么就让我们来创建这些应用吧!!!

cattail2012

感觉c,c++才是王道

huozhe3136

child_process.exec(command, [options], callback)

比如 var child = require(‘child_process’); child.exec(’/usr/local/php/bin/php test.php’,function(error, stdout, stderr){

});

cloudaice

奇思秒想,呵呵……

jiyinyiyong

Node 有没有直接脚本放到服务器, 访问相应网址直接就执行和返回的做法的? 跟 PHP 那样源码解压, 然后就能访问…

cattail2012

不行,不过要做到你要求的不需要几行代码,很简单的

nigary

如果能把这东西做出来还是挺有意思的,结合php和node的优势,想想都令人兴奋啊。

cattail2012

@jiyinyiyong 难道是我的理解有问题吗?只要机器上编译了node,这个不难吧?

jiyinyiyong

@cattail2012 真的不知道… 本来猜 ‘require()’. 但 res 的传递不好办的样子,
再往细节就不清晰了… 楼上指点一遍吧

jiyinyiyong

又来一个, 这次主页模仿 Node 的程度真是服了

React is a platform built on PHP for easily building fast, scalable network applications. React uses an event-driven, non-blocking I/O model that makes it lightweight and efficient, perfect for data-intensive real-time applications that run across distributed devices.

http://nodephp.org/

young40

我猜测不管是php采用node的写法, 还是node上能跑php, 都会做成不伦不类的.

如果想写php那么整个php环境就好了. 如果喜欢node, 整个node环境就好了.

似乎现在还没有看到什么杂交的语言甚至是低度流行的.

杂交语言这块, microsoft做了不少, 比如让python支持.net的ironpython(其实也不算杂交了, 因为.net本身其实和语言无关的啦)

node 与 php 是同一级别的吧,互相 YY 着

189

直接上 code 吧

const cprocess = require('child_process');
const path = require('path');
const fs = require('fs');

var fpath =  path.resolve(__dirname, 'date.php');

fs.chmod(fpath, "775", (err)=>{
    if(err){
        return console.log(err);
    }

    cprocess.exec(`php ${fpath}`, (err, stdout, stderr)=>{
        if(err){
            throw err;
        }
        console.log(stdout);
        console.log(stderr);
    })
})