Выполнить PHP-скрипты в веб-сервере Node.js

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

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

Ответ 2

У меня был тот же вопрос. Я попытался вызвать 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);});});

Ответ 3

Посмотрите здесь: 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

Snappy PHP - это модуль node для запуска PHP на стороне сервера.
Он совместим, но не зависит от экспресс.
Он также поддерживает запросы websockets на HTTP-порт.
Он предвзято для скорости при малой нагрузке, а не для экономии ресурсов.

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

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
Я должен упомянуть, что я автор:)

Ответ 5

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

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

Ответ 6

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

Вы можете увидеть краткое введение здесь. Просто, быстро и легко!

Ответ 10

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