YES: Gerard Butler does do his own singing in the Phantom of the Opera (2004).
In fact, all of the principal actors and actresses provided their own singing voice, except for Minnie Driver (who played Carlotta)...because of the high-opera-notes required for her character, her singing voice was over-dubbed by a more professional opera singer, Margaret Preece (who played Carlotta in the 1986 musical, and also acted as Carlotta's confidante in the 2004 film). Although, Driver's real singing voice is heard in the end titles with the song, 'Learn to be Lonely'.
Yes, it is impressive that Gerard Butler was given the starring role even though he had few to none professional singing lessons, but you have to admit his singing was slightly outshone by Emmy Rossum (Christine) and Patrick Wilson (Raoul) who both had some more respective singing foundations. But don't get me wrong, I still loved the film!!!...and the theatre production...and the book...lol
I know this is kinda long, but I hoped I helped!