Nie rób kodu zaczynającego się od <?. Prawdopodobnie opcja korzystania z tego tagu jest wyłączona na serwerze, bo jest przestarzała, więc pewnie dlatego kod wtedy próbuje się wyświetlić a nie wykonać.
Jeśli masz błąd 500 i żadnego komunikatu to ciężko powiedzieć co może być problemem. Sam kod wygląda poprawnie, nic skomplikowanego się tu nie dzieje. Być może dane do połączenia z bazą są błędne i to powoduje błąd. Najprościej włącz wyświetlanie błędów, jeśli masz taką opcję gdzieś w panelu administracji hostingu to może być tam, jeśli nie to dopisz w tym pliku zaraz za <?php
ini_set('display_errors', 'on');
Wtedy na ekranie powinieneś zobaczyć komunikat błędu. Oczywiście to jest tylko rozwiązanie tymczasowe, do debugowania, docelowo takich rzeczy nie należy umieszczać w kodzie, szczegóły błędów nie powinny się pokazywać na stronie.