Буквальный ответ на этот вопрос, который будет полезен тем, кого привлечёт заголовок вопроса -
escapeshellarg()
Все параметры, которые передаются в команды шелл, должны
в обязательном порядке обрабатываться этой функцией.
Решение смешной проблемы в текущем коде - надо всего лишь использовать двойные кавычки вместо одинарных.
$fileD = escapeshellarg("https://domain.zone/files/file".date("Ymd").".zip");
exec ("wget -O todayfile.zip $fileD");
Для решения же исходной задачи, разумеется, не нужен никакой РНР. Использовать для этих целей РНР - это все равно что сначала завернуть котлету в целлофановый пакет, а потом её есть. Ну ведь wget - это уже шелловая команда, и запускать её надо напрямую.
/usr/bin/wget -O /path/todayfile.zip "https://domain.zone/files/file$(date '+%Y%m%d').zip"