UNN4MED
@UNN4MED
Битрикс разработчик

Почему не работает file_put_contents?

Написал парсер и закинул его протестировать в сервис 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);
  • Вопрос задан
  • 303 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы