来自同一服务器的奇怪的file_get_contents行为

时间:2017-03-22 14:24:22

标签: http-status-code-404 file-get-contents

这个问题有点奇怪。我有一个可以在任何浏览器中打开的URL。

我可以使用来自本地服务器或任何其他服务器的file_get_contents()函数获取此URL的内容,但是当我在同一台服务器上运行带有file_get_contents()函数的页面时,它会出现404错误。

在此服务器上启用了file_get_contents(),因为它可以读取其他服务器上托管的URL的内容。

让我详细解释一下。

需要从同一服务器上的URL2读取我的Web服务器上的URL1。

URL1可以从任何其他服务器读取,但不能从URL2读取,因为两个URL都在同一台服务器上。

我想它必须对服务器设置做些什么。

谢谢!

1 个答案:

答案 0 :(得分:0)

您可能想尝试使用CURL而不是file_get_contents():

function get_web_page( $url )
{
    $options = array(
        CURLOPT_RETURNTRANSFER => true,     // return web page
        CURLOPT_HEADER         => false,    // don't return headers
        CURLOPT_FOLLOWLOCATION => true,     // follow redirects
        CURLOPT_ENCODING       => "",       // handle all encodings
        CURLOPT_USERAGENT      => "spider", // who am i
        CURLOPT_AUTOREFERER    => true,     // set referer on redirect
        CURLOPT_CONNECTTIMEOUT => 120,      // timeout on connect
        CURLOPT_TIMEOUT        => 120,      // timeout on response
        CURLOPT_MAXREDIRS      => 10,       // stop after 10 redirects
    );

    $ch      = curl_init( $url );
    curl_setopt_array( $ch, $options );
    $content = curl_exec( $ch );
    $err     = curl_errno( $ch );
    $errmsg  = curl_error( $ch );
    $header  = curl_getinfo( $ch );
    curl_close( $ch );

    $header['errno']   = $err;
    $header['errmsg']  = $errmsg;
    $header['content'] = $content;
    return $header;
}

$x=get_web_page('http://yourserver/the_script.php');    
echo $x["content"];