Muy buenas. Hace tiempo que utilicé este código para subir imágenes al server (lo encontré aquí en forosdelweb), y funcionaba bien, o al menos eso parecía. El caso es que ahora he descubierto un error que me está quebrando la quijotera. Las imágenes suben, pero al parecer siempre y cuando tengan una resolución menor de 1414x1061 píxeles. Es decir, probando he creado con photoshop una foto de 800x600 píxeles. La sube perfectamente.
 
He ido probando cambiando resoluciones y por ejemplo, a 1413x1060 sube perfectamente, pero a un píxel más ancho/alto, 1414x1061 ya da un error, y la página se carga a medias. De repente se corta el código y se queda una tabla a medias, incluso antes de llegar al código PHP. 
¿Es raro de coj****, o no? Yo ya he probado de todo o casi todo y no logro dar con el error. Posteo el código para ver si algún alma caritativa me echa una manita y salgo adelante.  
 Código PHP:
    $nombrefoto="1";
$dir="casas/".$nombrefoto."/";
$anchura=336;//Para foto grande
$altura=252;
$anchura_thumb=108;//Para foto pequeña
$altura_thumb=81;
$pos="L-T";
$c1=50;//Calidades
$c2=50;
 
$name=$_FILES["archivo"]['name']; 
$type=$_FILES["archivo"]['type']; 
$tamano=$_FILES["archivo"]['size'];
$image_name = $name;
            
$extension = "jpg";
            
$image_name=$nombrefoto.".".$extension;
                
if ($type<>"image/pjpeg"){
    $resultadoupload="El archivo seleccionado no es una imagen de tipo jpeg.";
}else{
    if ($tamano<=2000000){
        //Imagen original en el servidor 
        $temp=$_FILES["archivo"]['tmp_name'];
        
        //Objeto con el que trabajará el programa 
        if($type=="image/pjpeg"){ 
            $img = @imagecreatefromjpeg($temp) or die("No se encuentra la imagen $image_name<br>\n");  
        }
                    
        //INICIA PROCESO 
        $dimensiones = getimagesize($temp); //Dimensiones originales de la imagen 
        if ($dimensiones[0]>=350){//Si la imagen es mayor o igual a 350 píxeles de ancho
            if ($dimensiones[1]>=$dimensiones[0]/2){//Si el alto es mayor o igual al ancho entre 2
                if ($dimensiones[1]<$dimensiones[0]){//Si el alto es menor que el ancho (si no es vertical)
        
                    $image = imagecreatetruecolor($anchura,$altura); //crea la nueva imagen 
                    $FFF = imagecolorallocate($img, 255,255,255); 
                    imagefill($image, 0, 0, $FFF); 
                    imagecopyresampled ($image, $img, 0, 0, 0, 0, $anchura, $altura, $dimensiones[0], $dimensiones[1]);//reescala
                    fopen($dir.$image_name,'w+');
                    imagejpeg($image,"$dir$image_name", $c1);//mueve la imagen al server (el segundo parámetro es la calidad) 
                    imagedestroy($image); //destruye image 
                    imagedestroy($img); //destruye la imagen "origen" 
                                
                    $image_name2=$image_name;
                                                
                    //Ahora voy con la imagen pequeña
                                
                    $image_name=$nombrefoto2.".".$extension;
                                
                    //Imagen original en el servidor 
                    $temp=$_FILES["archivo"]['tmp_name'];
                        
                    //Objeto con el que trabajará el programa 
                    if($type=="image/pjpeg"){ 
                        $img = @imagecreatefromjpeg($temp) or die("No se encuentra la imagen $image_name<br>\n");  
                    }
                                
                    //INICIA PROCESO 
                    $dimensiones = getimagesize($temp); //Dimensiones originales de la imagen 
                    $image = imagecreatetruecolor($anchura_thumb,$altura_thumb); //crea la nueva imagen 
                    $FFF = imagecolorallocate($img, 255,255,255); 
                    imagefill($image, 0, 0, $FFF); 
                    imagecopyresampled ($image, $img, 0, 0, 0, 0, $anchura_thumb, $altura_thumb, $dimensiones[0], $dimensiones[1]);//reescala
                    fopen($dir.$image_name,'w+');
                    imagejpeg($image,"$dir$image_name", $c2);//mueve la imagen al server (el segundo parámetro es la calidad) 
                    imagedestroy($image); //destruye image 
                    imagedestroy($img); //destruye la imagen "origen"
                                
                    $unique = time(); 
                                
                    $resultadoupload="La imagen se ha subido correctamente.";
                }else{
                    $resultadoupload="No se admiten las imágenes verticales.";
                }
            }else{
                $resultadoupload="El alto de la imagen es inferior a la mitad del ancho, por lo que no guarda relación de aspecto";
            }
        }else{
            $resultadoupload="El ancho de la imagen es menor de 350 píxeles.";
        }
    }else{
        $resultadoupload="El tamaño de la imagen supera el límite permitido (2MB)";
    }
}