Судя по тексту, скрипт не был исходно предназначен для вызова не 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 - его и возвращаем. Нет - возвращаем какое-нибудь удобное значение по умолчанию (можно подставить своё, чтобы, например, в логах ловить).