将文件内容复制到变量

时间:2013-11-30 14:06:21

标签: php

我想将一个php文件内容复制到变量并执行它,而不是打印它! 我发现有两种方法:

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

以这种方式执行代码但不是我想要的,我将解释:

a.php只会:

<?php
require 'file.php';
$output = file_get_contents('http://example.com/b.php');
echo $output;
?>

b.php:

<?php
$hello = get_welcome_text();
echo $hello;
?>

当我执行文件a.php时,我得到了对未定义函数的调用错误,我不知道为什么它不能识别require行,它似乎分别执行b.php。

另一种方法是:

file_get_contents('path/to/YOUR/FILE.php');

此方法只是打印php脚本而不是执行它。

所以我想知道是否有办法将php文件内容复制到变量中并以与include / require相同的方式执行它,请不要建议我使用include / require,因为它不是我正在寻找什么。谢谢!

2 个答案:

答案 0 :(得分:1)

文件可以返回一个值,所以是的,你可以使用include。

included.php

<?php
return 2 + 2;

parent.php

<?php
$number = include 'included.php';
echo $number;

答案 1 :(得分:0)

在第一个'method'服务器中执行你的file_get_contents的separare请求,因此调用脚本的环境不会在其中可用。

使用第二个'方法'来获取脚本的内容,然后只是评估它。

eval(file_get_contents('http://.../b.php.txt'));

评估文件的方式可以定义要在调用脚本中插入的新功能,以便您可以调用某些方法和/或从中传递参数。

a.php只会

$r = eval(file_get_contents('http://.../b.php.txt'));
if ($r) b_foo($bar);

b.php

function b_foo($baz) {
return 42;
}
return true; // module loaded ok

当然,您知道在服务器环境中从第三方执行未经验证的代码是一种不好的做法,但如果您真的需要它......:)

相关问题