23

也许我已经坐在这里太久了,但为什么会file_get_contents回到false这里?我已经剪切并粘贴了 URL,它工作正常吗?

$url = "http://jobs.github.com/positions.json?search=" . $as_any . "&location=" .       $location;
// URL contains http://jobs.github.com/positions.json?search=Project Manager&location=London
var_dump($url);
$json = file_get_contents($url);
var_dump($json);
$results = json_decode($json, TRUE);
var_dump($results);
exit;

编辑:

我已经检查过了allow_url_fopen,它肯定是打开的。

4

5 回答 5

16

尝试这个:

$query = http_build_query(array('search'=>$as_any, 'location'=>$location));
$url = "http://jobs.github.com/positions.json?" . $query;

问题是您没有对包含空格的搜索词进行 URL 编码。该请求从服务器返回 400 错误,如果您启用了错误报告,您会注意到这一点。

于 2013-02-10T20:27:13.857 回答
11

您可能需要在 php.ini 中启用 allow_url_fopen

http://www.php.net/manual/en/filesystem.configuration.php#ini.allow-url-fopen

从文档中:

此选项启用支持访问 URL 对象(如文件)的 URL 感知 fopen 包装器。

您的服务器可能会阻止您使用 file_get_contents 打开位于 URL 中的文件。

于 2013-02-10T19:59:11.597 回答
6

可能 allow_url_fopen 在你的 php.ini 中:http: //php.net/manual/en/filesystem.configuration.php

需要被允许。

于 2013-02-10T20:00:38.517 回答
4

在我的情况下,在这个简单的函数上替换file_get_contents()

function get_content($URL){
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_URL, $URL);
    $data = curl_exec($ch);
    curl_close($ch);
    return $data;
}
于 2021-05-07T12:09:46.470 回答
1

有时如果file_get_contents返回false(未找到),您应该查看 url 是否已编码

例子:

http://test.net/демо/

应该:

https://test.net/%D0%B4%D0%B5%D0%BC%D0%BE/

于 2016-12-09T18:04:29.090 回答