This article is a - non-exhaustive - overview of available free CMS that I’ve tested or that are promising.
Free PHP CMS
- ProcessWire I haven't had the possibility to test ProcessWire yet but it looks to be a great and user friendly solution. It is focused on "custom fields" (like text, numbers, images, ...) and pages (in fact "templates") can have their different fields. Their API is also powerful, so the possibilities of ProcessWire seem to be endless! Some interesting links about ProcessWire: Basic Website tutorial, get inspired by sites using ProcessWire, Small Project Walkthrough and the concept of ProcessWire pages explained.
- Concrete5 "CMS made for Marketing but built for Geeks". That's the CMS I used for my personal portfolio. Concrete5 is very user friendly because it's possibile to edit your pages directly in the front-end. A page contains different blocks that are easy to customise and to create. One great free plugin for Concrete5 is "Designer Content", it let you create custom block types (that can contain different types like text, files, ...) via a simple admin interface.
- WordPress WordPress is definitely the best blogging platform. As a CMS it has, however, some shortcomings. But WordPress has a very large community with a lot of (free) plugins available that you can easily integrate into your websites. Some of those plugins can make WordPress a better CMS. Another great article about WordPress as a CMS is: "The Autopsy Of WordPress As CMS With 25 Great WP Plugins & Designs".
- Joomla is a very powerful CMS with many options (maybe too many for simple websites). The disadvantage of Joomla is that it can be complicated to add custom code. But, like WordPress, it remains very popular so there are a lot of free "components" and "plugins" available that are ready to use.
Other free CMS that are worth mentioning
Another CMS that is worth mentioning, but that isn’t a free PHP CMS is Perch (source code of a website that is using Perch and another example with layouts). It is really easy to use and to customise.
And finally, why not create your own custom PHP CMS?