web-dev-qa-db-fra.com

Exécuter PHP scripts sur le serveur Web Node.js

Quelles étapes sont nécessaires pour qu'un serveur Web Node.js fonctionne comme Apache exécutant les scripts PHP? Un moyen d'intégrer PHP dans Node.js?

Remarque: je ne veux pas exécuter de scripts PHP directement dans Node.js, mais être "routés" via une instance Apache ou similaire.

66
Daniel

Node.js ne supporte que JavaScript. Voici un tutoriel sur comment avoir PHP en cours d'exécution avec Node.js sur le côté.

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

31
jnbdz

J'ai eu la même question. J'ai essayé d'appeler php via l'interface shell et cela a donné le résultat souhaité:

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

Je suis sûr que cela ne figure pas en haut de la liste des pratiques recommandées, mais cela semblait faire ce que je voulais. Si, par contre, vous ne voulez pas exécuter de scripts PHP directement à partir de Node.js mais souhaitez les relayer à partir d'un autre serveur Web qui le fait, cela semble faire l'affaire:

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

Vous pouvez exécuter PHP comme avec n'importe quel serveur Web, en utilisant le module SPHP pour noeud.
Il est compatible mais ne dépend pas d’express. 
Il prend également en charge les requêtes websockets sur le port HTTP.
Son parti pris pour la vitesse sous faible charge, plutôt que d'économiser des ressources.

Pour installer dans le noeud:

npm install sphp

dans votre application:

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/'));

Pour plus d'informations, consultez https://github.com/paragi/sphp

Je suis aussi légèrement biaisé parce que je suis l'auteur :)

6
Simon Rigét

Jetez un oeil ici: https://github.com/davidcoallier/node-php

De leur lire moi:

Serveur en ligne PHP s'exécutant sur Node.js

Sois inquiet, très inquiet. Le nom NodePHP tire son nom de le fait que nous transformions effectivement un serveur Nice Node.js en un Interface FastCGI qui interagit avec PHP-FPM. 

C'est une preuve de concept omega-alpha-super-bêta, mais le logiciel exécute déjà un quelques scripts simples. Essentiellement terminé pour mes discussions sur Node.js pour PHP Développeurs cela s’avère être un projet assez intéressant pour lequel nous vont probablement utiliser avec Orchestra quand nous décidons de libérer notre Inline PHP serveur qui permet aux utilisateurs d'exécuter PHP sans Apache, Nginx ou un serveur Web.

Oui, cela va à l’encontre de toutes les idées et concepts de Node.js mais de l’idée est de pouvoir créer un serveur Web directement à partir de n’importe quel travail répertoire pour permettre aux développeurs d’avancer encore plus vite qu’il ne l’était avant. Nul besoin de créer des hôtes vhosts ou des blocs serveur, ni de modifier votre /etc/hosts plus.

4
Nathan J. Brauer

Vous pouvez essayer d'implémenter noeud de lien direct -> fastcgi -> php. Dans la réponse précédente, nginx sert les requêtes php en utilisant http-> sérialisation fastcgi-> unix socket-> php et les requêtes de nœud en tant que http-> nginx reverse proxy-> nœud serveur http.

Il semble que node-fastcgi paser soit utilisable pour le moment, mais uniquement en tant que nœud backc fastcgi. Vous devez l'adopter pour l'utiliser en tant que client fastcgi sur un serveur php fastcgi.

3
Andrey Sidorov

Une approche simple et rapide à mon avis consisterait à utiliser dnode-php pour cela.

Vous pouvez voir une brève introduction ici . Simple, rapide et facile!

2
Mick

Si php est en mode FPM, l'option phpfpm peut être une option, vérifiez la documentation https://www.npmjs.com/package/node-phpfpm

2
vnncn

Vous pouvez utiliser node-php pour exécuter php avec le nœud js: https://github.com/mkschreder/node-php

1
Martin

Vous pouvez servir PHP directement avec le noeud WAS: https://github.com/paragi/was

0
user3273253

Vous devez vérifier node-php-fpm .

0
Ivan Filho