Foros del Web » Programando para Internet » Node.js »

¿Servir páginas PHP en vez de HTML con Node.js?

Estas en el tema de ¿Servir páginas PHP en vez de HTML con Node.js? en el foro de Node.js en Foros del Web. Buenas, Estuve intentando servir páginas .php con Node. Pasar de: Código PHP: app . get ( '/' , function ( req ,  res ) {    res . ...
  #1 (permalink)  
Antiguo 19/03/2013, 12:18
CeK
 
Fecha de Ingreso: agosto-2005
Mensajes: 19
Antigüedad: 18 años, 8 meses
Puntos: 0
Pregunta ¿Servir páginas PHP en vez de HTML con Node.js?

Buenas,
Estuve intentando servir páginas .php con Node.

Pasar de:
Código PHP:
app.get('/', function (reqres) {
  
res.sendfile(__dirname '/index.html');
}); 
a

Código PHP:
app.get('/', function (reqres) {
  
res.sendfile(__dirname '/index.[B]php[/B]');
}); 
Pero cuando hago eso, ejecuto el servidor (hasta ahí todo bien), pero cuando accedo al puerto señalado, la página no se muestra y envía a descargar la pagina... porqué ocurre eso?
  #2 (permalink)  
Antiguo 19/03/2013, 22:19
Avatar de chuidiang
Colaborador
 
Fecha de Ingreso: octubre-2004
Mensajes: 3.774
Antigüedad: 19 años, 6 meses
Puntos: 454
Respuesta: ¿Servir páginas PHP en vez de HTML con Node.js?

Hola:

php es un lenguaje de programación. Un servidor Apache, cuando le pides una página php, se encarga de ejecutar el código en esa página php y enviar al navegador el resultado. node.js no ejecua el código php, simplemente lo considera un fichero como otro cualquiera y lo envía tal cual al navegador, sin ejecutar nada. El navegador no sabe qué hacer con un fichero de extensión php y simplemente te ofrece descargarlo.

Aquí tienes opciones http://stackoverflow.com/questions/6...ving-php-files

Se bueno.
__________________
Apuntes Java
Wiki de Programación
  #3 (permalink)  
Antiguo 21/03/2013, 12:50
CeK
 
Fecha de Ingreso: agosto-2005
Mensajes: 19
Antigüedad: 18 años, 8 meses
Puntos: 0
Respuesta: ¿Servir páginas PHP en vez de HTML con Node.js?

Buena respuesta, muy practica. Gracias por el aporte.
  #4 (permalink)  
Antiguo 26/03/2013, 05:31
Avatar de dontexplain  
Fecha de Ingreso: junio-2012
Mensajes: 536
Antigüedad: 11 años, 10 meses
Puntos: 127
Respuesta: ¿Servir páginas PHP en vez de HTML con Node.js?

No es tampoco excesivamente difícil entender que existe un cgi php que no es más que una aplicación php que recibe una entrada por parámetros y vuelca una salida por stdout con el php procesado.

Dado esto y si no hubiera alternativas puedes usar un cgi php como una aplicación child. El procedimiento es muy sencillo y creo que no involucra un derrame cerebral:

1. Seleccionas el fichero php.
2. Bien lo abres extrayendo el contenido o bien simplemente almacenas el path.
3. Usas el módulo child_process ejecutando el cgi con los parámetros correspondientes (mediante spawn por ejemplo), o bien indicando el php explícitamente o bien indicando el path (ir al paso 2)
4. Spawn devuelve un objeto de tipo ChildProcess , al cual se le agrega un listener a su objeto stdout a la espera de recibir datos mediante el evento data, cuyo primer parámetro contiene los datos

ChildProcess.stdout.on("data",function(data){
console.log("Y he aquí el htmlcito" + data);
})

Y listo.

También tengo que indicarte cómo volcarlo? Bien, una vez tengas la salida del cgi (data), dentro del callback, especificas al objeto response (el segundo parámetro del callback del servidor http la cabecera especificando el TIPO DE CONTENIDO que va a devolver. Sí, aunque te parezca extraño, de ahí te descargaba el contenido, porque hace falta indicar que es html explícitamente. Existen dos cabeceras relacionadas, Content-Disposition y Content-Type, la primera indica la disposición y la segunda el tipo. También está Content-Transfer-Encoding, en fin, existen alternativas.

response.setHeader("Content-Type", "text/html");

Un saludo.
__________________
21añero.
HTML/CSS, PHP, JS/jQuery, Mysql; NodeJS/Socket.io (& V8); C++ ; Python (wxpy); Ensamblador.
Músico (clarinetista/pianista) y compositor

Última edición por dontexplain; 26/03/2013 a las 05:41

Etiquetas: html, php
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:08.