В стопицотый раз нарвался на хрупкость:
$this->directory .= '/' . $sport_code . '/' . $first_league->country;
А надо было делать:
addPartURI(string $path, ...)
$this->directory = addPartURI($this->directory, $sport_code, $first_league->country);
потому что $sport_code может быть:
/soccer
soccer/
soccer
А что за addPartURI?
Проверяет каждый элемент на лишние слеши