Es pq son directorios...
¿Y pq?
Por esto:
Código PHP:
if(!is_dir($archivo)or !($archivo='')){
Es decir, primero comprueba si no son directorios. En caso de q no lo sean, no hace la segunda condición, y entra (pq tienes un or!).
Pero, ¿que pasa si son directorios? Comprueba la segunda condicion... y ahí está el fallo. En vez de comparar $archivo con una cadena, lo estás asignando. Es decir, en $archivo guardas "". Deberías tener un == ;)
Saludos!