Foros del Web » Programando para Internet » PHP »

Interpratar codigo PHP al abrir archivos con fopen()?

Estas en el tema de Interpratar codigo PHP al abrir archivos con fopen()? en el foro de PHP en Foros del Web. Se puede interpratar codigo PHP al abrir archivos con fopen()? Necesito que el contenido de mi archivo se imprimo con el PHP ya interpretado, no ...
  #1 (permalink)  
Antiguo 17/04/2010, 16:41
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 13 años, 1 mes
Puntos: 101
Interpratar codigo PHP al abrir archivos con fopen()?

Se puede interpratar codigo PHP al abrir archivos con fopen()?

Necesito que el contenido de mi archivo se imprimo con el PHP ya interpretado, no con codigo PHP. Por ejemplo, que desearía que en vez de obtener esto impreso me lo interprete:

<?php include("index.php"); ?>

Habrá manera?
  #2 (permalink)  
Antiguo 17/04/2010, 16:56
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 14 años, 1 mes
Puntos: 2534
Respuesta: Interpratar codigo PHP al abrir archivos con fopen()?

con fopen() no hay manera... recuerda que abrir y leer un archivo no es igual a evaluar su contenido...

para ello solo puedes usar include y similares, si lo haces de otra forma es imposible... (:
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #3 (permalink)  
Antiguo 17/04/2010, 17:01
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 13 años, 1 mes
Puntos: 101
Respuesta: Interpratar codigo PHP al abrir archivos con fopen()?

Ah! Perfecto. Gracias por el dato.

Voy a usar include.
  #4 (permalink)  
Antiguo 17/04/2010, 17:11
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 13 años, 1 mes
Puntos: 101
Respuesta: Interpratar codigo PHP al abrir archivos con fopen()?

Ups! No me funcionó.

Lo que yo necesito es igualar el contenido de esas paginas a una variables.

Busque por ahi y encontré este hilo:
http://www.forosdelweb.com/f18/guard...riable-512513/

A raíz de eso intente:
$fileList[$ruta] = file_get_contents($ruta);

y

$fileList[$ruta] = file($ruta);

Pero ninguno de los dos metodos me permite evaluar el contenido php. Include lo hace pero no permite guardar el contenido en una variable.

Alguna otra idea por favor? Lo que necesito es recorrer varios archivos e ir guardando su contenido en variables o en un array.
  #5 (permalink)  
Antiguo 17/04/2010, 17:38
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 13 años, 1 mes
Puntos: 101
Respuesta: Interpratar codigo PHP al abrir archivos con fopen()?

Bueno, esto si casi funciona, Patatrueke!

Cita:
$file = "'". include $ruta;
$file .= "'";
Lo que tengo que resolver ahora es el tema de rutas, porque en mi archivo "remoto" tenía escrito $_SERVER["PHP_SELF"] y ahora me toma por self esta capsula que estoy haciendo
  #6 (permalink)  
Antiguo 17/04/2010, 18:16
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 14 años, 1 mes
Puntos: 2534
Respuesta: Interpratar codigo PHP al abrir archivos con fopen()?

aún así vas por el mal camino... primero debes evaluar para que ejecutar código??

vamos, que include sirve para ello pero también incluye código en el buffer general... osea que en ningún momento su contenido se está asignando a tu variable...

ahora, una ves resuelvas el por qué de la ejecución del script podemos ver la manera de almacenar código en una variable, o bien... almacenar el código ya evaluado también en una variable.... (:
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #7 (permalink)  
Antiguo 17/04/2010, 18:21
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 13 años, 1 mes
Puntos: 101
Respuesta: Interpratar codigo PHP al abrir archivos con fopen()?

Si, te creo que es el mal camino.

Es esto:

- necesito leer varios archivos, que a su vez contienen codigo php, para tratarlos como string.

Por?

Es que los quiero comprimir en un zip. La librería que genera zips puede manejar archivos o string. Y si utilizo la manera de archivos, me empaqueta archivo con codigo PHP no interpretado!:

$zip->addFile($file, $newRelativeFolder);

Entonces lo que me queda es insertar los archivos como strings:

$zip->addFromString('NewNameOfFile.html', 'file content goes here');
  #8 (permalink)  
Antiguo 17/04/2010, 18:34
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 14 años, 1 mes
Puntos: 2534
Respuesta: Interpratar codigo PHP al abrir archivos con fopen()?

a ver... según -creo- entendí, es esto: quieres que el contenido de algunos archivos que vas a comprimir contengan el resultado evaluado de ciertos script??

osea, que si foo.php hace algún proceso... quieres capturar el resultado de dicho proceso, y adjuntarlo como un archivo en el ZIP que piensas crear??

porque realmente tu explicación es extraña...
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #9 (permalink)  
Antiguo 17/04/2010, 18:38
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 13 años, 1 mes
Puntos: 101
Respuesta: Interpratar codigo PHP al abrir archivos con fopen()?

Si si. Lo explicaste bien.

Tengo varios archivos .php que en realidad estan tomando el lugar de archivos html. Yo necesito generar esos html.

Con esto lo puedo renombrar y empaquetar a la vez. Pero necesito interpretarlo:

$zip->addFile($file."php", $file."html");


No creo que la libreria contemple eso. Me leo el manual, y un buen tutorial pero desde la libreria no hay ayuda. Por eso busco otras maneras de interpretar esos archivos php antes de guardarlos.

http://ar.php.net/manual/en/book.zip.php
http://devzone.zend.com/article/2105
  #10 (permalink)  
Antiguo 17/04/2010, 18:49
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 14 años, 1 mes
Puntos: 2534
Respuesta: Interpratar codigo PHP al abrir archivos con fopen()?

entiendo...

en realidad es sencillo lo que necesitas, y eso va a depender del contexto en que piensas ejecutar dichos scripts...

si el contexto es el mismo que en el que estás creando el ZIP, entonces puedes usar buffers:
Código PHP:
// ...

ob_start();
include 
'foo.php';
$bar ob_get_contents();
ob_end_clean();

// ... 
de ese modo estarías capturando el contenido de la evaluación en el mismo contexto de tu script... sin afectarlo gracias al uso de buffers...

si no es necesario el contexto puedes encapsular dicha implementación y escribir alguna función para ello, que es al final parte del concepto de View bajo el patrón MVC (y de hecho usar alguna clase para eso sería lo ideal)
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #11 (permalink)  
Antiguo 17/04/2010, 20:18
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 13 años, 1 mes
Puntos: 101
Respuesta: Interpratar codigo PHP al abrir archivos con fopen()?

Mil gracias. Mañana lo pruebo. Hoy no se que son los buffers.
  #12 (permalink)  
Antiguo 18/04/2010, 08:24
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 13 años, 1 mes
Puntos: 101
Respuesta: Interpratar codigo PHP al abrir archivos con fopen()?

Patatrueke: siento que esto es lo que necesito. Ahora estaría almacenando los archivos en un array. Para esto, tuve que redeclarar la variable de session PHP_SELF! Pero creo que voy bien:

Cita:
$_SERVER["PHP_SELF"] = $ruta;
ob_start();
include $ruta;
$fileList[$elemento] = ob_get_contents();
ob_end_clean();
El problema empieza ahora con las funciones que se repiten, y no puedo redeclarar. Tengo una funcion que está presente en cada archivo. Como evito que esos includes den problemas?

Te agradezco el empujon que me diste hasta aquí. Estoy leyendo sobre buffers desde aqui:
http://www.desarrolloweb.com/articul...alida-php.html
  #13 (permalink)  
Antiguo 18/04/2010, 09:37
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 14 años, 1 mes
Puntos: 2534
Respuesta: Interpratar codigo PHP al abrir archivos con fopen()?

lamentablemente tienes que rediseñar tu aplicación... en todo caso la pregunta sería, ¿todas las funciones que se repiten son idénticas??

si la respuesta es si, entonces procura sacarlas todas de ahí y agruparla en un include aparte.... así, antes de procesar todo incluyes la librería con tus funciones y todos felices... (:

en caso de que sean funciones realmente especificas -que no lo creo- puede crear condicionales para declarar o no las funciones
Código PHP:
if ( ! function_exists('foo'))
{
  function 
foo()
  {
    
// ...
  
}

__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #14 (permalink)  
Antiguo 18/04/2010, 09:41
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 13 años, 1 mes
Puntos: 101
Respuesta: Interpratar codigo PHP al abrir archivos con fopen()?

Esto funciona perfecto, y si, todas las funciones son una misma funcion, que tengo en un include :)

Cita:
if ( ! function_exists('foo'))
{
function foo()
{
// ...
}
}
Lo que me queda por resolver es que no se me imprima los contenido en pantalla al procesar mi script. Yo solo quiero procesar contenidos de archivo, no mostrarlos en pantalla!

Estoy probando cosas así, pero todavía no logré resolverlo:

$pagina = addslashes(ob_get_contents());
  #15 (permalink)  
Antiguo 18/04/2010, 09:48
Avatar de pateketrueke
Modernizr
 
Fecha de Ingreso: abril-2008
Ubicación: Mexihco-Tenochtitlan
Mensajes: 26.399
Antigüedad: 14 años, 1 mes
Puntos: 2534
Respuesta: Interpratar codigo PHP al abrir archivos con fopen()?

precisamente por eso debes usar buffers... y dentro de ello debes ejecutar tus scripts...

de hecho, el ejemplo que tienes realizado, ¿no te funciona como planteas??

porque vamos... es algo simple, y debe funcionar correctamente!!

ahora... ¿a cual contenido te refieres?
__________________
Y U NO RTFM? щ(ºдºщ)

No atiendo por MP nada que no sea personal.
  #16 (permalink)  
Antiguo 18/04/2010, 10:00
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 13 años, 1 mes
Puntos: 101
Respuesta: Interpratar codigo PHP al abrir archivos con fopen()?

Bueno, me das aliento. Ojalá lo resolvamos.

Cita:
ahora... ¿a cual contenido te refieres?
Yo estoy leyendo los archivos con un include, dentro de un buffer. Por contenido me refiero al contenido de cada uno de estos archivos. Con esos contenidos genero archivos dentro de un zip:

$zip->addFromString($key.".html", $content);

Publico todo el codigo:

Código PHP:
// create object
$zip = new ZipArchive();

 
// declaro un directorio en donde buscar archivos para comprimir
$directorio "./"
$puntos = array('.''..');
$item array_diff(scandir($directorio), $puntos);


// open archive 
if ($zip->open('AoIFreshManual.zip'ZIPARCHIVE::CREATE) !== TRUE) {
    die (
"Could not open archive");
}

// recorro la carpeta y genero un array con los nombres de archivos    
// bucle para recorrer el directorio    
foreach($item as $elemento) {
    
    
$ruta $directorio.$elemento;
    echo 
"Procesando: ".$ruta."<br>";
    
    
// si me encuentro con una carpeta, no hago nada.
    
if (is_dir($ruta)){}
    
    elseif (
is_file($ruta)){
        
        
$en_dos pathinfo($elemento);
        
$extension strtolower($en_dos['extension']);
        
$nombre_archivo $en_dos['filename'];
            
        
// solo modificaré archivos html
        
if($extension == "php")    {    
        
        
set_time_limit 90 );
        
        
// genero un buffer para almacenar las paginas en un array, y elimino el bufer.
        
$_SERVER["PHP_SELF"] = $ruta;
        
ob_start();
        include 
$ruta;
        
$pagina addslashes(ob_get_contents());
        
ob_end_clean();
        
$fileList[$nombre_archivo] =  $pagina// mysql_real_escape_string(addslashes( ))
        
}
    
        }
        } 
// foreach
        

// add files
foreach ($fileList as $key => $content) {
    
    
$zip->addFromString($key.".html"$content);
    
    
// $zip->addFile($f, $localFolder) or die ("ERROR: Could not add file: $f"); 
}
   
// close and save archive
$zip->close();
echo 
"Zip archive created successfully."
El problema con este codigo es que es interminable. Se cuelga el navegador. Subi el tiempo a 90 segundos porque antes no alcanzaba, pero ahora sencillamente no tengo resultados.

De cualquier manera, con 30 segundos me aparecian los contenidos en pantalla, cuando yo lo unico que quiero es generar archivos dentro de un zip (no imprimir nada en pantalla).
  #17 (permalink)  
Antiguo 18/04/2010, 13:33
Avatar de mayid
Colaborador
 
Fecha de Ingreso: marzo-2009
Ubicación: BsAs
Mensajes: 4.014
Antigüedad: 13 años, 1 mes
Puntos: 101
Respuesta: Interpratar codigo PHP al abrir archivos con fopen()?

Ya funciona! Y sin tanto rollo.

Te agradezco mucho Pateketrueke!!!

Cita:
ob_start();
include $ruta;
$pagina = ob_get_contents();
ob_end_clean();
$fileList[$archivo] = $pagina;

Etiquetas: fopen
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 11:58.