78 votes

Exécuter des scripts PHP dans un serveur web Node.js

Quelles sont les étapes nécessaires pour qu'un serveur web Node.js fonctionne comme Apache en exécutant des scripts PHP ? Y a-t-il un moyen d'intégrer PHP dans Node.js ?

Note : Je ne veux pas exécuter les scripts PHP directement dans Node.js mais les faire "transiter" par une instance Apache ou quelque chose de similaire.

75voto

Dave Causey Points 931

J'ai eu la même question. J'ai essayé d'invoquer php par le biais de l'interface shell, et cela a produit 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 bonne place sur la liste des pratiques recommandées, mais cela semblait faire ce que je voulais. Si, d'un autre côté, vous ne voulez pas exécuter des scripts PHP directement à partir de Node.js mais que vous voulez 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);});});

3 votes

Des idées astucieuses. Merci.

0 votes

Comment passer le paramètre de Node JS à Php script ?

0 votes

Exec("php index.php 'param1' 'param2'")

32voto

jnbdz Points 1277

Node.js ne supporte que JavaScript. Voici un tutoriel sur la manière de faire fonctionner PHP avec Node.js en parallèle.

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

1 votes

Je n'ai même pas pensé à exécuter des scripts PHP directement via Node.js ;) Le lien que vous avez posté pointe dans la bonne direction cependant.

7voto

Nathan J. Brauer Points 4316

Jetez un coup d'œil ici : https://github.com/davidcoallier/node-php

De leur lire moi :

Serveur PHP en ligne fonctionnant sur Node.js

Soyez inquiets, soyez très inquiets. Le nom NodePHP tire son nom de le fait que nous transformons un beau serveur Node.js en une interface FastCGI interface FastCGI qui interagit avec PHP-FPM.

Il s'agit de l'omega-alpha-super-beta-proof-of-concept mais il exécute déjà quelques scripts simples. quelques scripts simples. Principalement réalisé pour mes conférences sur Node.js pour PHP Développeurs il s'agit d'un projet intéressant que nous utiliserons probablement allons très probablement utiliser avec Orchestre lorsque nous déciderons de publier notre Serveur PHP en ligne qui permet d'exécuter PHP sans Apache, Nginx ou tout autre serveur web.

Oui, cela va à l'encontre de toutes les idées et de tous les concepts de Node.js, mais l'idée est de pouvoir créer un serveur web directement à partir de n'importe quel ordinateur qui fonctionne. est de pouvoir créer un serveur web directement depuis n'importe quel répertoire de travail répertoire de travail pour permettre aux développeurs d'aller encore plus vite qu'avant. avant. Il n'est plus nécessaire de créer des vhosts ou des blocs serveurs ou de modifier votre fichier /etc/hosts.

0 votes

Le node-php sur npm est un projet complètement différent : github.com/mkschreder/node-php ce qui fonctionne très bien pour moi.

4voto

Andrey Sidorov Points 9287

Vous pouvez essayer d'implémenter un lien direct node -> fastcgi -> php. Dans la réponse précédente, nginx sert les requêtes php en utilisant la sérialisation http->fastcgi->unix socket->php et les requêtes node comme http->nginx reverse proxy->node http server.

Il semble que node-fastcgi paser est utilisable pour le moment, mais seulement comme backend fastcgi de node. Vous devez l'adopter pour l'utiliser comme un client fastcgi vers un serveur fastcgi php.

2voto

Patt Points 5838

Une approche simple et rapide à mon avis, serait d'utiliser dnode-php pour ça.

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X