Выполнять PHP-скрипты на веб-сервере Node.js. - PullRequest
67 голосов
/ 01 июля 2011

Какие шаги необходимы для работы функции веб-сервера Node.js, например, Apache, для выполнения сценариев PHP?Любой способ интегрировать PHP в Node.js?

Примечание: я не хочу выполнять PHP-скрипты напрямую в Node.js, но «маршрутизировать» через экземпляр Apache или что-то подобное.

Ответы [ 10 ]

63 голосов
/ 12 октября 2011

У меня был тот же вопрос.Я попытался вызвать php через интерфейс оболочки, и он привел к желаемому результату:

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

Я уверен, что это не так высоко в списке рекомендуемых практик, но, похоже, он делал то, что хотел.Если, с другой стороны, вы не хотите выполнять PHP-скрипты напрямую из Node.js, а хотите передать их с другого веб-сервера, который делает это, похоже, уловка:

var exec = require("child_process").exec;
app.get('/', function(req, res){exec("wget -q -O - http://localhost/", function (error, stdout, stderr) {res.send(stdout);});});
31 голосов
/ 01 июля 2011

Node.js поддерживает только JavaScript. Вот руководство по запуску PHP с Node.js на стороне.

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

7 голосов
/ 09 января 2016

Вы можете запустить PHP как с любым веб-сервером, используя модуль SPHP для узла.
Он совместим, но не зависит от экспресс.
Он также поддерживает запросы веб-сокетов на порт HTTP.
Он смещен для скорости при небольшой нагрузке, а не для экономии ресурсов.

Для установки в узел:

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 голосов
/ 16 марта 2013

Взгляните сюда: https://github.com/davidcoallier/node-php

Из их прочитанного мной:

Встроенный PHP-сервер, работающий на Node.js

Будьте обеспокоены, будьте оченьволновался.Название NodePHP происходит от того факта, что мы превращаем красивый сервер Node.js в интерфейс FastCGI, который взаимодействует с PHP-FPM.

Это омега-альфа-супер-бета-доказательство концепции, но она уже запускает несколько простых скриптов.В основном сделано для моих выступлений по Node.js для разработчиков PHP , это оказывается довольно интересным проектом, который мы, скорее всего, собираемся использовать с Orchestra , когда мы решим выпустить наш Встроенный сервер PHP , который позволяет людям запускать PHP без Apache, Nginx или любого веб-сервера.

Да, это противоречит всем идеям и концепциям Node.js, но идея заключается в том, чтобы иметь возможность создаватьвеб-сервер прямо из любого рабочего каталога, чтобы позволить разработчикам работать даже быстрее, чем раньше.Больше не нужно создавать vhosts или серверные блоки или изменять ваши / etc / hosts.

4 голосов
/ 01 июля 2011

Вы можете попробовать реализовать прямую ссылку на узел -> fastcgi -> php. В предыдущем ответе nginx обслуживает запросы php с использованием http-> fastcgi serialisation-> unix socket-> php и запросы узлов как http-> сервер http обратного прокси-сервера nginx> узла.

Кажется, что node-fastcgi paser в данный момент можно использовать, но только как бэкэнд узла fastcgi. Вам нужно принять его для использования в качестве клиента fastcgi на сервере php fastcgi.

2 голосов
/ 13 июля 2016

Если php находится в режиме FPM, опция node-phpfpm может быть опцией, проверьте документацию https://www.npmjs.com/package/node-phpfpm

2 голосов
/ 19 мая 2013

Простой, быстрый подход , по моему мнению, будет использовать dnode-php для этого.

Краткое введение можно посмотреть здесь .Просто, быстро и просто!

1 голос
/ 27 января 2014

Вы можете использовать node-php для запуска php с узлом js: https://github.com/mkschreder/node-php

0 голосов
/ 11 декабря 2017

Вы должны проверить node-php-fpm.

0 голосов
/ 05 февраля 2014

Вы можете обслуживать PHP напрямую с узла WAS: https://github.com/paragi/was

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...