Почему PHP может неправильно определять, что он использует веб-контекст (а не консольный)?Php

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Почему PHP может неправильно определять, что он использует веб-контекст (а не консольный)?

Сообщение Anonymous »

У меня есть PHP-скрипт на общем веб-хосте, который считывает множество файлов журналов и суммирует данные в формате JSON. Этот скрипт периодически запускается через Cron. Я не контролирую сервер, но у меня есть доступ по FTP.
Запись cron для этого скрипта выглядит следующим образом:

Код: Выделить всё

0    1    *    *    *    php /home/username/public_html/example.com/minecraft-graph/src/process.php > /home/username/public_html/example.com/minecraft-graph/output-hourly.json
Другими словами, ежедневно в час ночи скрипт запускается, и выходные данные JSON записываются в файл JSON. JSON загружается интерфейсом веб-сайта и используется для построения графика.
А вот что странное. Получение JSON в веб-приложении недавно сломалось, и я понимаю, почему. Файл JSON, на который перенаправляется стандартный вывод, теперь выглядит так:

Код: Выделить всё

X-Powered-By: PHP/7.3.33
Content-type: text/html; charset=UTF-8

{
"averages": [
{
"year": 2023,
"month": 1,
"date": 15,
"hour": 16,
"average": 0
},
{
Очевидно, что заголовки здесь сделают файл JSON недействительным.
Поскольку Apache здесь не участвует, PHP должен отображать эти заголовки. Более того, раньше этот скрипт работал нормально, так что думаю владелец хостера что-то перенастроил. (Я думаю, у них есть какая-то система CPanel).
Моя первоначальная мысль исправить это — сделать это в коде:

Код: Выделить всё

header_remove('X-Powered-By');
header_remove('Content-type');
Однако это немного неприятно, и мне интересно, есть ли переключатель, который я могу дать PHP, чтобы он прекратил отображать любые заголовки. Что-то делает вывод, что оно работает в веб-контексте, а (при запуске из Cron на консоли) это явно не так.
Обновления
Попробовав новые условия поиска, я нашел этот вопрос, и он рекомендует -q, но, похоже, он устарел с версии 5.2. Я мог бы попробовать: в моей локальной системе это, похоже, не вызывает ошибок при установке 7.x. (Но моя локальная система не отображает эти заголовки, поэтому трудно сказать, является ли это исправлением).
Кроме того, один из комментариев на этой странице руководства предполагает, что может возникнуть хэшбанг. почини это. Я тоже мог бы попробовать это, хотя мне интересно, помешает ли это мне запустить сценарий через Интернет для отладки.

Подробнее здесь: https://stackoverflow.com/questions/783 ... -console-c
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»