Написал парсер и закинул его протестировать в сервис Railway.app:
https://parser-php-production.up.railway.app/
При нажатии на кнопку обновить новые данные обновляются в файл json и отображаются на таблице AJAX'ом, но на хостинге появляется ошибка:
Warning: file_put_contents(./../../assets/data/weather.json): Failed to open stream:
Permission denied in /app/vendor/action/parse.php on line 23
Кроме этого появляется ошибка на header:
Warning: Cannot modify header information - headers already sent by
(output started at /app/vendor/action/parse.php:23) in /app/vendor/action/parse.php on line 27
На локалке всё работает и обновляется.
Вот код, где это происходит:
<?
set_time_limit(0);
ini_set('memory_limit', -1);
require './../../libs/autoload.php';
require 'function.php';
use \GuzzleHttp\Client;
use \DiDom\Document;
$client = new Client();
$document = new Document();
$url = 'https://yandex.ru/pogoda/?via=hl';
$html = get_html($url, $client);
$document->loadHtml($html);
sleep(rand(1, 3));
$days_data = get_days($document, $client);
// СОХРАНЕНИЕ JSON
file_put_contents(
'./../../assets/data/weather.json', json_encode($days_data, JSON_UNESCAPED_UNICODE)
);
// ОТПРАВКА JSON-ОТВЕТА
header('Content-type: application/json');
echo json_encode($days_data, JSON_UNESCAPED_UNICODE);