@AlexLichi

Как убрать уведомление на e-mail об этих ошибках конкретного PHP файла?

Установлена Vesta (свежая) на CentOS 7.3.1611 x64
У меня в cron выполняется php файлик определенный и там есть какие-то ошибки и на моё мыло зареганное в Vesta приходят такие письма с заголовком:
(Cron Daemon) <admin@my-domen.ru>
и текстом:
PHP Notice: Undefined index: SERVER_PROTOCOL in /home/admin/web/my-domen.ru/public_html/file.php on line 21
PHP Notice: Undefined index: SERVER_PROTOCOL in /home/admin/web/my-domen.ru/public_html/file.phpp on line 21
PHP Notice: Undefined index: SERVER_PORT in /home/admin/web/my-domen.ru/public_html/file.php on line 22
PHP Notice: Undefined index: SERVER_PORT in /home/admin/web/my-domen.ru/public_html/file.php on line 22
PHP Notice: Undefined index: SERVER_NAME in /home/admin/web/my-domen.ru/public_html/file.php on line 24
PHP Notice: Undefined index: REQUEST_URI in /home/admin/web/my-domen.ru/public_html/file.php on line 24

как убрать эти уведомления от этого файла?
  • Вопрос задан
  • 473 просмотра
Пригласить эксперта
Ответы на вопрос 2
Ahen
@Ahen
Универсальный дилетант
Такие-то решения (выбрать одно):
Первое - убрать ошибку? Ну эт как вариант.
Второе - сменить email профиля, под которым создана задача в крон.
Третье - нажать "Выключить уведомления" в панели, в разделе Cron.

95212681f00d43b2940ec0d4d01ac700.png
Ответ написан
Комментировать
@lubezniy
Судя по тексту, скрипт не был исходно предназначен для вызова не Web-сервером и посему считает, что в суперглобальной переменной $_SERVER всегда установлены параметры, относящиеся к обратившемуся клиенту и запросу. Чтобы адаптировать скрипт, можно пройтись по указанным в логе строкам и там заменить текст на:

$_SERVER ["SERVER_PROTOCOL"] на (isset ($_SERVER ["SERVER_PROTOCOL"]) ? $_SERVER ["SERVER_PROTOCOL"] : "http")
$_SERVER ["SERVER_PORT"] на (isset ($_SERVER ["SERVER_PORT"]) ? $_SERVER ["SERVER_PORT"] : 80)
$_SERVER ["SERVER_NAME"] на (isset ($_SERVER ["SERVER_NAME"]) ? $_SERVER ["SERVER_NAME"] : "example.com")
$_SERVER ["REQUEST_URI"] на (isset ($_SERVER ["REQUEST_URI"]) ? $_SERVER ["REQUEST_URI"] : "/")

? - это тернарный оператор, слева от которого указывается булевое выражение, а справа - варианты результата выполнения через двоеточие: слева от двоеточия ставится результат, выдаваемый, если выражение даёт в результате true, справа - если false . isset - функция, проверяющая наличие (в данном случае) элемента в массиве. Есть параметр в массиве $_SERVER - его и возвращаем. Нет - возвращаем какое-нибудь удобное значение по умолчанию (можно подставить своё, чтобы, например, в логах ловить).
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
19 апр. 2024, в 13:31
10000 руб./за проект
19 апр. 2024, в 13:12
35000 руб./за проект
19 апр. 2024, в 13:06
6000 руб./за проект