¿Cómo puedo cargar un archivo PHP en una variable?


Necesito cargar un archivo PHP en una variable. Como include();

He cargado un simple archivo HTML como este:

$Vdata = file_get_contents("textfile.txt");

Pero ahora necesito cargar un archivo PHP.

 76
Author: Alix Axel, 2009-08-13

8 answers

Supongo que desea obtener el contenido generado por PHP , si es así use:

$Vdata = file_get_contents('http://YOUR_HOST/YOUR/FILE.php');

De lo contrario, si desea obtener el código fuente del archivo PHP, es lo mismo que a .archivo txt:

$Vdata = file_get_contents('path/to/YOUR/FILE.php');
 104
Author: Alix Axel,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-08-13 16:48:02
ob_start();
include "yourfile.php";
$myvar = ob_get_clean();

Ob_get_clean()

 103
Author: neobie,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-02-02 16:11:43

Si está utilizando http://, como eyze sugirió, solo podrá leer la salida del script PHP. Solo puede leer el script PHP si está en el mismo servidor que el script en ejecución. A continuación, podría utilizar algo como

$Vdata = file_get_contents('/path/to/your/file.php");
 6
Author: Jonathan Weiß,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-08-13 14:23:07

Si desea cargar el archivo sin ejecutarlo a través del servidor web, lo siguiente debería funcionar.

$string = eval(file_get_contents("file.php"));

Esto se cargará y luego evaluará el contenido del archivo. El archivo PHP tendrá que estar completamente formado con las etiquetas <?php y ?> para que eval lo evalúe.

 6
Author: Jess,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-08-13 14:48:15

Teóricamente podría usar fopen, luego usar stream_get_contents.

$stream = fopen("file.php","r");
$string = stream_get_contents($stream);
fclose($stream);

Eso debería leer todo el archivo en string string para usted, y no debería evaluarlo. Aunque me sorprende que file_get_contents no funcionara cuando especificaste la ruta local....

 4
Author: Zeroshade,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-08-13 14:39:42

Alternativamente, puede iniciar el almacenamiento en búfer de salida, hacer un include/require y luego detener el almacenamiento en búfer. Con ob_get_contents (), puedes simplemente obtener las cosas que fueron emitidas por ese otro archivo PHP en una variable.

 2
Author: Alex Weinstein,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-08-13 15:48:39

File_get_contents() no funcionará si su servidor tiene allow_url_fopen apagado. La mayoría de los servidores web compartidos lo tienen desactivado de forma predeterminada debido a riesgos de seguridad. Además, en PHP6, la opción allow_url_fopen ya no existirá y todas las funciones actuarán como si estuviera permanentemente puesta a off. Así que este es un método muy malo de usar.

Su mejor opción para usar si está accediendo al archivo a través de http es cURL

 1
Author: Mark,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2009-08-13 14:44:31

Si su archivo tiene una declaración de retorno como esta:

<?php return array(
  'AF' => 'Afeganistão',
  'ZA' => 'África do Sul',
  ...
  'ZW' => 'Zimbabué'
);

Puede obtener esto a una variable como esta:

$data = include $filePath;
 1
Author: Toni Almeida,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-05-18 10:30:27