web-dev-qa-db-ja.com

Node.js Webサーバー内でPHPスクリプトを実行

ApacheのようなNode.js Webサーバー機能でPHPスクリプトを実行しますか?Node.js内でPHPを統合する方法はありますか?

注:Node.js内でPHPスクリプトを直接実行するのではなく、Apacheインスタンスまたは類似のものを介して「ルーティング」したいです。

68
Daniel

Node.jsはJavaScriptのみをサポートします。 PHPをNode.jsで実行する方法についてのチュートリアルです。

http://blog.mixu.net/2011/01/04/nginx-php-fpm-and-node-js-install-on-centos-5-5/

32
jnbdz

同じ質問がありました。シェルインターフェイスから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サーバーからそれらを中継したい場合、これはトリックを行うようです:

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

こちらをご覧ください: https://github.com/davidcoallier/node-php

彼らの私を読んでから:

インラインPHP Node.jsで実行されているサーバー

心配する、非常に心配する。名前NodePHPは、Nice Node.jsサーバーをPHP-FPMとやり取りするFastCGIインターフェースに効果的に変えているという事実から名付けられました。

これはオメガ-アルファ-スーパー-ベータの概念実証ですが、すでにいくつかの簡単なスクリプトを実行しています。 Node.js for PHP Developers)での私の講演はほぼ終了しました。これは非常に興味深いプロジェクトであり、 Orchestra を使用して、Inline PHP serverこれにより、Apache、Nginx、またはWebサーバーなしでPHPを実行できます。

はい、これはNode.jsのすべてのアイデアと概念に反しますが、アイデアは、作業ディレクトリから直接Webサーバーを作成して、開発者が以前よりもさらに速く作業できるようにすることです。仮想ホストやサーバーブロックを作成したり、/ etc/hostsを変更したりする必要はもうありません。

7
Nathan J.B.

NodeのSPHPモジュールを使用して、他のWebサーバーと同様にPHPを実行できます。
互換性はありますが、エクスプレスに依存していません。
HTTPポートでのwebsocketリクエストもサポートしています。
リソースを節約するのではなく、負荷が小さい場合の速度に偏りがあります。

ノードにインストールするには:

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 をご覧ください。

私は著者であるため、私も少し偏っています:)

7
Simon Rigét

直接リンクノード-> fastcgi-> phpの実装を試みることができます。前の回答では、nginxはhttp-> fastcgi serialisation-> unix socket-> phpを使用してphp要求を処理し、ノード要求はhttp-> nginx reverse proxy-> node httpサーバーとして処理します。

node-fastcgi paser は現時点では使用できますが、ノードfastcgiバックエンドとしてのみ使用できます。 php fastcgiサーバーのfastcgiクライアントとして使用するには、これを採用する必要があります。

4
Andrey Sidorov

私の意見では、シンプルで高速なアプローチは、そのために dnode-php を使用することです。

簡単な紹介を見ることができます こちら 。シンプル、迅速、簡単!

2
Mick

PhpがFPMモードの場合、node-phpfpmがオプションになる可能性があります。ドキュメントを確認してください https://www.npmjs.com/package/node-phpfpm

2
vnncn

Node-phpを使用して、ノードjsでphpを実行できます。 https://github.com/mkschreder/node-php

1
Martin

PHPノードWASで直接提供できます: https://github.com/paragi/was

0
user3273253

チェックアウトする必要があります node-php-fpm

0
Ivan Filho