2016-04-03 39 views
0

我試圖使用下面的代碼來緩存來自另一個站點的物品的價格。x分鐘的緩存文件php

$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字符串。我想寫它的文件,以便我可以解碼和使用它來定價項目。任何人都可以幫助我在這裏,將不勝感激。

回答

0

您正在嘗試寫入文件系統的基本目錄(/),而您不能(也不應該)從Web訪問的PHP腳本獲得寫入權限。你需要構建一個合適的路徑fopen()

fopen($_SERVER['DOCUMENT_ROOT'] . '/prices.json', 'w'); 

注意:您使用上述路徑一次,文件的生存確認的時候,但當時使用的只是/prices.json後。

一個更好的,少重複,方式做它是使用你已經設置的變量,$cache_file

fopen($cache_file, 'w');