Вас не смущает что написано "WWW-Authenticate", а вы пишите авторизация? и следом " Unauthorized"?
Странно, правда если убрать if(empty($_SERVER['PHP_AUTH_USER'])), как вы говорите, то ответ вы получает, а в обратном случае его не получаете? Но мне кажется что в том и в том случает всё работает просто кто-то юзает exit() и не доходит до принта.
Вы работая с заголовками вообще смотрите на них когда проверяете или ожидаете методом вызова принтов и алертов диагностировать? :)