One way to get a quick understanding of whether or not they understand programming in general is with a quick operator test from logical operators to arithmetic operations. Some examples of this could be...
What do the following evaluate to?
- 6*2+7
- 4|1
- true || 1 && false
... I think you get the idea. There are an unlimited number of operator problems you can come up with, from easy to advanced. This is a good way to gauge their experience on a scale from beginning to intermediate to advanced. For example, if they have never worked with bit-level arithmetic but they get everything else correct, you get a good idea of what they've been spending their time working on. But certainly if I were you, this would be the first part of the test, because if they can't even get past this part then there is no point in even trying to do the rest.
As for the rest of the test, I would find short but thought-provoking problems that have more than one solution to them. This way you can see how they tackle the problem. Also, these questions could be specific to what their job is going to be. If they are going to be working with a lot of object-oriented stuff, it would be a great idea to add a bunch of questions about OOP in PHP.
Also, sometimes it is a good idea to give a pre-test before you even interview the person. This gives them the opportunity to see if they know what they are doing or not, because some of these guys (and girls) think they know if when they actually don't. It will save you a lot of weeding time if they don't come in the first place. This will save you tons of wasted time.