Well, those are two very different things. CSS is styles, not a real programming language. It's also rapidly evolving. I learned by restyling sites with
Stylish, especially this one. To work with CSS, you need at least the basics of HTML, and its associated DOM. JavaScript would be nice, but you can frequently get by without it.
PHP is a real programming language. It's fairly old and stable. If you like learning from books (I don't) there's probably an O'Reilly book for you. I don't know which one, though.
And then there's all the other stuff in the LAMP ecosystem.
- Linux is frequently useful to know, but not essential.
- Apache is frequently the system that runs your PHP pages, but unless you want to be a sysadmin you can probably set it and forget it.
- MySQL...do you speak it? Or any other variant of Structured Query Language? It's not absolutely necessary to use a database with PHP, but it's strongly encouraged. I've used flat files sometimes, but that doesn't scale at all.