Aunque PHP te presta a la hora de subir un archivo el dato del formato MIME del mismo (en $_FILES['archivo']['type'] ..) o incluso tiene otras funciones para ver el formato MIME de un archivo dado .. quien realmente gestiona o define toda esa información no es PHP directamente, sino el protocolo HTTP por el cual transita ese dato .. los navegadores que informan en cierta cabecera HTTP de dicho dato sobre el archivoy el servidor HTTP.
Por ende, todo este tipo de preguntas deberías investigarlas por otros "foros" (no sé cual realmente).
Podrías ir revisando algo de las "RFC's" que definen dicho formato ...
http://en.wikipedia.org/wiki/MIME
Sobre como navegador identifique el contenido que pasa por el al hacer un "upload" de un archivo por un formulario HTML y campo "file" .. ya será cosa que lo veas en algún sitio donde se espefique como cada navegador (o mejor dicho "cliente") trabaja dicho tema.
Un saludo,