如何将PHP文件加载到variables中?

我需要加载一个PHP文件到一个variables。 像include();

我已经加载了一个简单的HTML文件,如下所示:

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

但是现在我需要加载一个PHP文件。

我想你想获得由PHP生成内容 ,如果这样使用:

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

否则,如果你想获得PHP文件源代码 ,就和.txt文件一样:

 $Vdata = file_get_contents('path/to/YOUR/FILE.php'); 
 ob_start(); include "yourfile.php"; $myvar = ob_get_clean(); 

ob_get_clean()

如果您使用的是http:// ,就像build议的那样,您将只能读取PHP脚本的输出。 如果PHP脚本与运行脚本位于同一台服务器上,则只能读取该脚本。 你可以使用类似的东西

 $Vdata = file_get_contents('/path/to/your/file.php"); 

如果你想加载文件而不通过networking服务器运行,下面的工作。

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

这将加载然后评估文件内容。 PHP文件需要用<?php?>标签完全形成,以便评估它。

理论上你可以使用fopen,然后使用stream_get_contents。

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

这应该读取整个文件为您的$string,不应该评估它。 虽然我很惊讶,当你指定本地path时,file_get_contents不起作用….

或者,您可以开始输出缓冲,执行include / require,然后停止缓冲。 使用ob_get_contents(),您可以将其他PHP文件输出的内容转换为variables。

如果您的服务器closures了allow_url_fopen,则file_get_contents()将不起作用。 由于安全风险,大多数共享networking主机默认closures。 另外,在PHP6中allow_url_fopen选项将不再存在,所有的函数都会被设置为closures状态。 所以这是一个非常糟糕的方法来使用。

如果您通过http访问文件,则最佳select是cURL