file_get_contents()忽略主机

时间:2016-04-16 20:28:23

标签: php vagrant localhost file-get-contents

我已经两次遇到这个问题了,我无法在互联网上找到答案。

我在vagrant机器上安装了一个本地的开发apache服务器,它正确地为我的网站服务。我还在/ etc / hosts中正确设置了主机,我可以使用任何浏览器轻松访问开发网站。但是当我尝试获取已处理的php脚本的内容(使用file_get_contents())时,要将其转换为pdf文件,该函数会忽略我的主机设置并尝试在Internet上找到此站点。它并不存在,因为该网站尚未生效。

有没有办法让file_get_contents符合我的主机设置?

我的php脚本:

$html = file_get_contents(get_template_directory_uri(). "/pdf-template.php");

我的主机设置:

192.168.56.123  site.com
192.168.56.123  www.site.com

1 个答案:

答案 0 :(得分:0)

function get_contents($url, $ua = 'Mozilla/5.0 (Windows NT 5.1; rv:2.0.1) Gecko/20100101 Firefox/4.0.1', $referer = 'http://www.google.com/') {
    $header[0] = "Accept-Language: en-us,en;q=0.5";
    $curl = curl_init();
    curl_setopt($curl, CURLOPT_URL, $url);
    curl_setopt($curl, CURLOPT_USERAGENT, $ua);
    curl_setopt($curl, CURLOPT_REFERER, $referer);
    curl_setopt($curl, CURLOPT_HTTPHEADER, $header);
    curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($curl, CURLOPT_TIMEOUT, 10);
    $content = curl_exec($curl);
    if(curl_errno($curl)){
        http_response_code(500);
    }
    curl_close($curl);
    return $content;
}

// setting up dns cache
$ch = curl_init('http://site.localhost/');
curl_setopt($ch, CURLOPT_RESOLVE, ["site.localhost:80:127.0.0.1"]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_exec($ch);


// getting content
get_contents('http://site.localhost/')

该代码适用于我而不是/ etc / hosts。