"的file_get_contents"没有按预期工作

时间:2015-11-14 15:04:21

标签: php

我设置了一个函数来获取另一个页面的输出。但我只是收回文件内容。我弄清楚为什么?这是我的代码:

$from = date('d.m.Y');
        $to = date('d.m.Y', strtotime('+30 day', time()));
        $postdata = http_build_query(
            array(
                'set' => $from,
                'to' => $to
            )
        );       
        $opts = array('http' =>
            array(
                'method'  => 'POST',
                'header'  => 'Content-type: application/x-www-form-urlencoded',
                'content' => $postdata
            )
        );   
        $context  = stream_context_create($opts);   
        $list = file_get_contents($_SERVER['DOCUMENT_ROOT'] . 'Events.php', false, $context);

2 个答案:

答案 0 :(得分:1)

文件系统上的

file_get_contents()将文件作为文本文件读取。你必须通过它的uri调用它才能让它执行。

它不是一个函数,而是两个,交替它给文件系统做的事情(几乎fopen文件,读取整个文件,返回内容),以及它给出一个url做什么(做一个GET调用网址,获取其内容,返回其全部内容)

所以只需将$_SERVER['DOCUMENT_ROOT']替换为$_SERVER['HTTP_HOST']即可,

答案 1 :(得分:1)

如果你想包含另一个本地php文件,你必须包含()或require()它。

library

如果文件不存在或不可读,include()会发出警告,但require()会抛出致命错误。通过这种方式,您可以使用return-keyword获取命名文件返回的内容。

要获得php输出,您可以使用ob_start():

$list = include($_SERVER['DOCUMENT_ROOT'] . 'Events.php');

另一种方法是使用单独的http-Get,但这意味着更多的开销。