用于x分钟php的缓存文件

用于x分钟php的缓存文件,php,fwrite,Php,Fwrite,我试图使用以下代码缓存来自另一个站点的商品价格 $cache_file = $_SERVER['DOCUMENT_ROOT'] . '/prices.json'; if (file_exists($cache_file) && (filemtime($cache_file) > (time() - 60 * 9))) { $file = file_get_contents($cache_file); } else { $url = 'http://csgo.backpac

我试图使用以下代码缓存来自另一个站点的商品价格

$cache_file = $_SERVER['DOCUMENT_ROOT'] . '/prices.json';
if (file_exists($cache_file) && (filemtime($cache_file) > (time() - 60 * 9))) {
$file = file_get_contents($cache_file);
} else {
 $url = 'http://csgo.backpack.tf/api/IGetPrices/v4/?key=XXXXXXXXXXXXXX';
 $file = curl_load($url);
 $fp = fopen('/prices.json', 'w');
 fwrite($fp, $file, LOCK_EX);
 fclose($fp);
}

api键是正确的,但它仍然不会写入。api返回的结果是一个json字符串。我想把它写在文件中,这样我就可以解码并用它来为物品定价。如果有人能在这里帮助我,我将不胜感激。

您正在尝试写入文件系统的基本目录(
/
),而您没有(也不应该)从可通过web访问的PHP脚本进行写入访问。您需要为
fopen()
构造正确的路径:

注意:在检查文件是否存在时,您使用了上述路径一次,但之后只使用了
/prices.json

一种更好、重复性更少的方法是使用您已经设置的变量,
$cache\u file

fopen($cache_file, 'w');
fopen($cache_file, 'w');