2015-01-16 1 views
-5

Я пытаюсь запустить php-код в Node.js. Но при наборе localhost: 4000 в браузере весь код index.php отображается в браузере.Как запустить PHP Script в Node.js?

Node.js код

var http = require('http'), 
fs = require('fs'), 
var app = http.createServer(function (request, response) { 
fs.readFile("index.php", 'utf-8', function (error, data) { 
    response.writeHead(200, {'Content-Type': 'text/plain'}); 
    response.write(data); 
    response.end(); 
}); }).listen(4000); 

PHP код:

<?php 

$handle = fopen("data.txt", "r"); 
if ($handle) { 
    while (($line = fgets($handle)) !== false) { 

     echo $line; 
     echo '<br>'; 
    } 
} else { 
    // error opening the file. 
} 
fclose($handle); 
?> 

Так что, пожалуйста, дайте мне знать, как я могу запустить PHP код с помощью Node.js, предложить мне некоторые решение.

+0

PHP должен быть интерпретирован, то, что вы делаете, это просто выборка содержимого и отображения файлов. Я не знаю, почему вы это делаете, но это далеко не так. – nilobarp

+0

Я не думаю, что вы можете, вам нужен php, работающий на вашем сервере. Зачем вам смешивать узел с php. Это 2 сервера. Ваш сервер узла не будет знать, как интерпретировать файл php – TommyBs

+0

хорошо спасибо, можете ли вы предложить мне, как запустить PHP-скрипт через node.js – MyCode

ответ

3

Node.js не может запускать PHP из коробки. Это не сервер PHP и не может анализировать PHP-код. Возможно, вы сможете использовать прошивку JavaScript PHP, но они, вероятно, не будут иметь надежной производительности.

Один из таких параметров - php.js, который является PHP PHP PHP, но даже не рекомендуется.

Настоящая рекомендация заключается в том, что вы конвертируете свой код в Node.js, если вы собираетесь использовать Node.js вообще. Ваш код относительно тривиально конвертируется. См. Node.js ', встроенный в API fs. В частности, функцию fs.readFile(), которую вы уже используете для чтения файла PHP.

Если вам нужно преобразовать каждую новую строку в разрыв страницы HTML, это также относительно тривиально. Во-первых, вы захотите принудить данные к строке, используя метод toString(). Вы также можете использовать соответствие Regex или использовать split() и join() для преобразования новых строк в </br>. В этом примере я буду использовать метод split()/join().

E.g.

fs.readFile('filename.txt', 'utf-8', function(err, data) { 
    var str = data.toString(); 
    str = str.split(/\r\n|\r|\n/g).join('</br>'); 
    res.writeHead(200, {'Content-Type': 'text/plain'}); 
    res.write(str); 
    res.end(); 
}); 
Смежные вопросы