Hola, yo de nuevo por acá a los tiempos, he estado demasiado ocuapdo estos días.
Voy a tratar de responder a tu duda de acuerdo a lo que posteaste.
Primero hay un error en la declaración de tus variables, recuerda que en php y en algunos otros lenguajes por no decir en la mayoría el signo slash / es un signo de divición por lo que al declarar tus variables sin comillas no estás declarando una cadena de fecha sino más bien una divición, por ejemplo:
$fecha1=31/12/1999 = 0,0012923128230782057695514423878606
$fecha2=05/10/2005 = 2,4937655860349127182044887780549e-4
$fecha=20/01/2003 = 9,9850224663005491762356465302047e-4
De ahí empieza el problema de tus resultados inesperados.
Por lo que tienes que declarar las fechas cómo si estuvieras declarando string de la siguiente manera:
$fecha1="31/12/1999";
$fecha2="05/10/2005";
$fecha="20/01/2003";
Te sugiero que estas comparaciones de fechas lo hagas con enteros, es decir pasando las fechas a enteros para ser más precisos, lo puedes hacer como sigue:
$fecha1Int = mktime(0,0,0,substr($fecha1,3,2), substr($fecha1,0,2), substr($fecha1,6,4));
$fecha2Int = mktime(0,0,0,substr($fecha2,3,2), substr($fecha2,0,2), substr($fecha2,6,4));
$fechaInt = mktime(0,0,0,substr($fecha,3,2), substr($fecha,0,2), substr($fecha,6,4));
Bueno es una de las formas y luego tu pregunta con los datos enteros:
if ($fecha1Int<$fechaInt)
{
if ($fecha2Int<$fechaInt)
echo "fecha2 es menor que fecha";
else
echo "fecha2 es mayor que fecha";
}
else
echo "fecha1 es mayor que fecha";
Te sugiero revisar un poquito los estándares de programación, porque en esas pocas líneas de código que posteaste hay demasiado desorden sin ánimo de ofender, eso es fatal cuando quieres dar mantenimiento a tus aplicaciones, puedes aplicar estándares de Pear o de Zend que son similares.
Saludos, y espero haberte ayudado en algo.