1. ¡OFERTA! con cupón "DIRVPS": hosting por $0,01 y también VPS Linux y Windows por $0,01 el primer mes por Interserver ← publi
    Descartar aviso
Descartar aviso
Al usar este sitio web, aceptas que nosotros y nuestros socios podamos establecer cookies para fines tales como personalizar el contenido y la publicidad. Más información.

VPS: Problema con UTF-8 y move_uploaded_file() en PHP

Tema en 'Servidores Dedicados' iniciado por eduardor2k, 22 Ene 2007.

  1. eduardor2k

    eduardor2k Nuevo usuario

    Hola a todos.
    Antes que nada quiero decir que me acabo de unir a esta comunidad y al igual que ahora soy yo el que necesito vuestra ayuda, espero algún día poder ayudaros yo a vosotros.

    Hace poco pasé de un alojamiento compartido con (godaddy.com) a un servidor virtual dedicado, debido a que sobrepasaba el numero de conexiones simultaneas al servidor y cada dos por tres me aparecía (a mis visitantes también) una mensaje de apache molesto.

    El problema es el siguiente, ahora al estar en un servidor dedicado tódo lo tengo que hacer yo y hasta ahora nunca había usado a fondo linux.

    UTF-8
    Mi primer problema fué que muchos caracteres en mi sitio no se veían correctamente, eso lo pude corregir mas o menos convirtiendo los archivos de unicode a utf-8, pero por ejemplo mi foro phpbb no hay ningún método oficial para adaptarlo.

    ejemplo:
    http://www.mundosmallville.com/tv.alfabetokryptoniano.php
    http://www.mundosmallville.com/tv.lostrescristales.php

    Mi pregunta:
    Pienso que ese error sucede porque el servidor está configurado para que el 'charset' o los caracteres sean utf-8, ¿hay algúna manera para cambiar esto por el grupo de caracteres español?

    move_uploaded_file()
    Desde que estoy en el servidor dedicado esta función de php no funciona, podéis probarlo aquí.
    http://www.redr2k.com/prueba.php

    phpinfo()
    http://www.mundosmallville.com/phpinfo.php

    ¿Esa función puede ser que esté desactivada? Si es así ¿Cómo se puede activar?

    Quiero añadir que este servidor funciona usando fedora core 4 y que nose mucho sobre linux, aunque leyendo tutoriales por ahí he conseguido instalar. Yum para fedora y con eso la libreria GD para php.

    Saludos, Eduardo
     
  2.  
  3. Apolo

    Apolo Administrador Miembro del Staff Administrador CH

    Hola eduardor2k,

    En lugar de UTF-8 utiliza iso-8859-1

    En cuanto a lo que mencionas de la función move_uploaded_file() podrías activar el desplegado de errores de PHP y así ver con más detalle que es lo que ocurre:

    display_errors ON

    Saludos!
     
  4. eduardor2k

    eduardor2k Nuevo usuario

    Hola.
    A lo que te refieres de los caracteres es cambiarlo en la configuración de apache (httpd.con) o en el documento HTML?

    Voy a probar lo que tu dices con respecto a move_uploaded_file()

    PD: Gracias por responder.

    Saludos, Eduardo
     
  5. eduardor2k

    eduardor2k Nuevo usuario

    Hola.
    Me di cuenta que en el PHP.INI había una opción de configuración de los caracteres y estaba puesta como UTF-8, ya la puse con la configuración tradicional, ahora los caracteres se leen correctamente.

    Yo había probado de cambiar la configuración en apache pero sin exito.

    move_uploaded_file()
    Ya he probado corregir el script viendo los errores que me muestra, pero no consigo saber que le pasa, ya que me da un error:

    Warning: move_uploaded_file(/home/burningzone/public_htmluploadforo/29e1cf7eb6ebee5a2818.jpg) [function.move-uploaded-file]: failed to open stream: No such file or directory in /home/burningzone/public_html/upload.php on line 33

    A continuación te paso el código fuente:

    http://www.mundosmallville.com/upload.php

    CODE, HTML o PHP Insertado:
    <?php
    include ("sup.inc.php");
    
        function randomname($len){
    	    if(empty($len)){$len = "20";}
    	    for($i=1;$i<=$len;$i++)$str.=base_convert(rand(0,15),10,16);
    	    return $str;
        }
        function do_upload($upload_dir, $upload_url, $max_file_size, $reducir, $calidad) {
            
    		if(!empty($_FILES["userfile"])){
    			
    			if ( $_FILES['userfile']['size'] > $max_file_size ) {
    			
    				$mensaje .=  "El Archivo no puede ocupar más de:".(intval($_FILES['userfile']['size']/800))."Kb";
    				
    			} else {
    			
    				if ($_FILES['userfile']['type'] != "image/jpeg" AND 
    					$_FILES['userfile']['type'] != "image/gif" AND 
    					$_FILES['userfile']['type'] != "image/png" AND 
    					$_FILES['userfile']['type'] != "image/bmp"){
    				
    					$mensaje .=  "Solo se aceptan imagenes en formato JPEG/GIF/BMP y PNG" ;
    				
    				} else {
    				
    					$longitud = strlen($_FILES['userfile']['name']);
    					$posicion = strrpos($_FILES['userfile']['name'],'.');
    					$extension = substr($_FILES['userfile']['name'], $posicion);
    					$nombre = randomname(20);   
    				
    					if(!move_uploaded_file($_FILES['userfile']['tmp_name'], $upload_dir.$nombre.$extension)){
    					
    						$mensaje .=  'No se ha pódido mover la imagen de la carpeta temporal al directorio definitivo
    
    										[b]Nombre:[/b]'.$_FILES['userfile']['tmp_name'].'
    
    										[b]Carpeta de destino: '.$_SERVER['DOCUMENT_ROOT'].'/uploadforo/'.$nombre.$extension.'[/b]
    ' ;
    						print_r($_FILES);
    						
    					} else {
    						$message .= "
    
    Cópia el siguiente texto si quieres insertar una imagen en el foro: 
    						
    <hr>[b]<center><textarea rows=\"3\" cols=\"75\" style=\"font-family: Arial; font-size: 10pt; border: 1px solid #000000; color: #FBB804; font-weight: bold; background-color: #530101\">
    						[img]".$upload_url.$nombre.$extension."[/img]</textarea></center>[/b]
    <hr>
    
    ";
    									
    					}
    					
    				}
    			}
    			
    		} else {
    		
    			$mensaje .= "No has seleccionado ningún archivo
    ";
    		
    		}
    		
    		return $mensaje;
        }
    	/*
    	** CARGAMOS LOS DATOS DEL SERVIDOR
    	*/
    	
    	// CONFIGURACIÓN
        $max_file_size = "1024000";  //ex: c = 1Mb
    	$upload_dir = "uploadforo";
        $upload_temp = "uploadforo";
    	
    	$upload_url = "http://".$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']).'/'.$upload_temp."/";
    	$upload_dir = $_SERVER['DOCUMENT_ROOT'].'/'.$upload_temp."/";
        /*
        ** VERIFICAMOS QUE EXISTAN LAS CARPETAS
        */
    
    	if(!empty($_POST['upload'])){
            if ($_FILES['userfile']) {
            	$calidad = true;
                $reducir = $_GET['reducir'];
    	        $message = do_upload($upload_dir, $upload_url, $max_file_size, $reducir, $calidad);
    	    }
    	    else {
    	        $message = "El formato del archivo es incorrecto";
    	    }
        }
    
    print '<center>
    
    '.$message.'
    
    </center>';
    ?>
    <center>
    <table border="0" width="90%" id="table1" bordercolor="#440202" cellspacing="0" cellpadding="0" bgcolor="#530101">
    	<tr>
    		<td bgcolor="#440202" class="maintitle">Información:</td>
    	</tr>
    	<tr>
    		<td bgcolor="#530101" align="center">
            1. Solo se pueden subir imagenes (JPG/JPEG/GIF)
    
            2. Las imagenes no pueden pesar más de 1Mb's
    
    
            </td>
    	</tr>
     	<tr>
    		<td bgcolor="#440202" class="maintitle">Redución del tamaño:</td>
    	</tr>
    	<tr>
    		<td  align="center">
                Soporte para:
     Gif:
    <?php
    if(!function_exists('imagegif')){echo "<font color=red>[b]No[/b]</font>";}
    else{echo "<font color=green>[b]Si[/b]</font>";}
    ?>
     - Png:
    <?php
    if(!function_exists('imagepng')){echo "<font color=red>[b]No[/b]</font>";}
    else{echo "<font color=green>[b]Si[/b]</font>";}
    ?>
     - Jpg:
    <?php
    if(!function_exists('imagejpeg')){echo "<font color=red>[b]No[/b]</font>";}
    else{echo "<font color=green>[b]Si[/b]</font>";}
    ?>
     - Bmp:
    <?php
    if(!function_exists('imagewbmp')){echo "<font color=red>[b]No[/b]</font>";}
    else{echo "<font color=green>[b]Si[/b]</font>";}
    ?>
    
    1. Solo se reducira el tamaño de las imagenes si aparece habilitado arriba.
    
    2. Solo se reducira el tamaño de la imagen si esta tienes dimensiones superiores a 450x350.
    
      </td>
    	</tr>
    	<tr>
    		<td bgcolor="#440202" class="maintitle">Subir Imagen:</td>
    	</tr>
    	<tr>
    		<td  align="center">
            [b]Instrucciones:[/b]
    
            1. Busca la imagen en tu ordenador (recuerda que debe respetar las caracteristicas indicadas anteriormente).
    
            2. Haz clic en subir (suele tardar unos minutos dependiendo la conexión a internet).
    
            3. Copia el texto en negritas y pegalo en tu mensaje en el foro.
    
    
        		<form name="upload" id="upload" ENCTYPE="multipart/form-data" method="post">
    	          <input type="file" id="userfile" name="userfile">
    
                  ¿Reducir el tamaño de la imagen? <input type="checkbox" name="reducir" value="true" checked>
    	          <input type="submit" name="upload" value="Subir">
    	        </form>
            </td>
    	</tr>
    </table>
    </center>
    <?php
    include ("inf.inc.php");
    ?>
    PD: Este código debería funcionar sin problemas en cualquier servidor, sólo quitale los include y debería funcionar sin problemas.

    Saludos, Eduardo
     
  6. eduardor2k

    eduardor2k Nuevo usuario

    Hola a todos.
    Ya está corregido, era un problema de chmod, estaba en 755 y tenía que estar en 777.

    Gracias por la ayuda.

    Saludos, Eduardo
     
  7. Apolo

    Apolo Administrador Miembro del Staff Administrador CH

    Me alegra saber que te sirvieron los parámetros que te pasé y que pudiste solucionarlo.

    Saludos!
     


Alojamiento web, Hosting Reseller, Servidores Dedicados - All in Hosting


    
    
    
    
Blog · Sitios amigos: GuiaHosting · Unidominios · Interalta ·