More often than not, you can make do with a popular CMS like Drupal or Joomla or many others.
As an example, The Onion is run off Drupal. You can get a general idea of what a CMS like Drupal can do for you:
http://drupal.org/handbook/is-drupal-right-for-you
And some examples:
http://drupal.org/cases
While I've mentioned Drupal as one candidate, there are many other CMSes that you can evaluate. Go to opensourcecms.com and try out some of the demos they have. They let you log in as an admin and play around with the system to your heart's content.
Also, I strongly suggest staying away from PHPNuke and that family of CMSes.
On the other hand, if you feel that you needs are to specific to be met by a CMS, you can look into Rails or its cousins in PHP land. Symfony, CakePHP, CodeIgnitor are a few names that come to mind. Even Zend has their own framework (which I've never looked into).
The problem with many of these PHP based frameworks (or Rails clones, whatever you want to call them) is poor documentation. Symfony shines here because they have good documentation (and a great book by Apress, which is free online). They also have a shell prompt thing going which I like. Some people don't like a command line interface and prefer Cake. Frameworks in PHP are like 31 flavors - there's something for everyone.
One last note: do not consider Rails unless you intend to get a dedicated server. While many shared hosts will run Rails, many (if not most) of them have a bad time efficiently running your FastCGI processes.
Originally posted by: Stiganator
Which is more secure?
If well written, a home-made system can be more secure than a popular CMS powered website. If a security bug is found for a particular CMS and you do not update your code, a hacker could use that to his advantage.
On the other hand, large open source applications tend to be more secure than something written by a handful of people in a single office, because open source code is looked over by hundreds, if not thousands of people. YMMV.
What are pros and cons of each?
It is hard to answer more than I have above without knowing more about the website you want to make.