У меня есть этот внешний json-файл. С простым кешем. Локальный он отлично работает. Но в Интернете есть проблема, связанная с foreach. Но этой проблемы не было раньше. Я установил права файлов и папок на 0777. Так что на самом деле это не проблема. Но если файл кэша будет сгенерирован, то права будут снова на 0644.читать json файл с php // проблемы с правами // как решить
Ниже приведен код и здесь предупреждение. http://www.bonc.at/gng/events.php
Пожалуйста, дайте мне подсказку.
$srcUrl = 'http://ginger-gin.redox-labs.com/api/read_db.json';
$cacheFile = "cachefile.json";
$cacheupdatetime = 3600; // 3600 Sekunden = 1 Stunde; Datei nur ein Mal pro Stunde neu holen
// --- Cache ---
$updatecache = false;
if (file_exists($cacheFile)) {
$timediff = time() - filemtime($cacheFile);
if ($timediff > $cacheupdatetime) {
$updatecache = true;
}
} else {
$updatecache = true;
}
if ($updatecache) {
$str = file_get_contents($srcUrl);
file_put_contents($cacheFile, $str);
}
// --- /Cache ---
// json aus cache holen und in array dekodieren
$jsonStr = file_get_contents($cacheFile);
$dataArray = json_decode($jsonStr, true);
// eigene events Tabelle bauen und keys aus der events-table-definition setzen
$events = array();
foreach ($dataArray['events'] as $value) {
$events[] = array_combine($dataArray['tables']['events'], $value);
}
// events Array ausgeben
print_r($events);
// oder so für Browser
// print('<pre>' . print_r($events, true) . '</pre>');
// Beispiel HTML
print('<div>');
foreach ($events as $event) {
print('Location: ' . $event['en_location'] . '<br/>');
print('Description: ' . $event['en_shortdesc'] . '<br/>');
print('Start: ' . $event['start'] . '<br/>');
print('End: ' . $event['end'] . '<br/>');
print('<hr/>');
}
print('</div>');
Пожалуйста, включите ошибку в ваш вопрос. И просмотрите эти ссылки - [mcve] & [ask] – Tom