• Publicidad

Aparentes problemas con binmode

¿Ya sabes lo que es una referencia? Has progresado, el nível básico es cosa del pasado y ahora estás listo para el siguiente nivel.

Aparentes problemas con binmode

Notapor pseudemys » 2009-05-11 17:00 @750

¡¡Saludos!!

Soy nuevo en el foro, no sé si existe un lugar donde presentarse o qué rollo pero no encontré el reglamento :p En fin, disculpas si me brinco protocolos pero úrgeme ver si pueden ayudarme a aclarar un asunto. La situación es la siguiente:

Tengo un script que me sirve para cargar archivos en el servidor, éste estaba funcionando perfectamente hasta este jueves (07may2009) que fue el día que se subió correctamente el último archivo. Pero el día de hoy todos los archivos que son "uploadeados" (¿así se escribe o acabo de inventar una palabra?) se han cargado vacíos.

Revisé en otro script que tengo en el mismo server pero en otra instancia de Apache y también está fallando, entonces temí que el serveradmin hubiera actualizado la versión de Perl o algo similar; sin embargo. no lo ha hecho ¿Qué puedo hacer antes de volverme loco?

Mi código es algo tan simple como esto:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
my $q= new CGI();
my $upload_filehandle = $q->upload("file");

my $ruta="/ruta/del/archivos.ext"

open UPLOADFILE, ">$ruta" || do{ $mensaje->{acceso}="no"; $mensaje->{motivo}="error en la carga del archivo";return($mensaje)};
           
            binmode UPLOADFILE;

            while( <$upload_filehandle> )
            {
            print UPLOADFILE;
            }

            close UPLOADFILE;
Coloreado en 0.004 segundos, usando GeSHi 1.0.8.4


Sospecho del binmode() porque ya se me acabaron los sospechosos, jaja.
¿Necesitaré cambiarlo por otro? Espero recomendaciones... :p de antemano Gracias.
Avatar de Usuario
pseudemys
Perlero nuevo
Perlero nuevo
 
Mensajes: 5
Registrado: 2009-05-11 16:01 @709
Ubicación: México

Publicidad

Notapor explorer » 2009-05-11 17:14 @759

Bienvenido a los foros de Perl en Español, pseudemys.

¿No estará lleno el disco duro o tu partición asignada? ¿No habrán cambiado los permisos del directorio donde se guardan los ficheros? ¿Sale algún mensaje de error en el error.log?

He repasado la sección "CREATING A FILE UPLOAD FIELD" del manual de CGI.pm y no veo nada raro.

Usa el módulo CGI::Carp como ves en mi CGI mínimo para que te saque los errores al navegador, así no será necesario consultar el error.log.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor kidd » 2009-05-11 18:18 @804

A mi también me parece que si los archivos te los está creando vacíos sea porque tu disco está lleno.

La otra posibilidad es que el cambio se haya realizado desde el formulario html, habría de verificar que siga igual.

Saludos
Uriel Lizama Perl programmer fundador de Perl en Español
Perl Programming Language
Avatar de Usuario
kidd
Creador de Perl en Español
Creador de Perl en Español
 
Mensajes: 1166
Registrado: 2003-10-15 16:52 @744
Ubicación: México

Aparentes problemas con binmode

Notapor pseudemys » 2009-05-12 14:15 @635

La partición no está ni cerca de estar llena. Al directorio le he colocado incluso permisos de 777 para asegurarme de los permisos y sigue sin funcionar. En los logs de errores no aparece nada fuera de lo habitual. Ya revisé los formularios y ninguno ha cambiado.

Los scripts sí están funcionando (son CGI). Lo que me preocupa es que la falla es global porque todos mis sistemas en este momento están imposibilitados para subir archivos a pesar de estar en distintas instancias de Apache... y aunque casi ni se usan acá en el trabajo ejercen una presión psicológica algo molesta; jaja, así que lo que intento es encontrar una solución que no implique cambiar el código de todos los scripts implicados pero no sé de qué otra forma puedo cargar los archivos al server, pero si no queda de otra tal vez puedan recomendarme alguna librería...

Gracias por la bienvenida y gracias por sus respuestas :)
Avatar de Usuario
pseudemys
Perlero nuevo
Perlero nuevo
 
Mensajes: 5
Registrado: 2009-05-11 16:01 @709
Ubicación: México

Notapor explorer » 2009-05-12 14:22 @640

Saca el valor de $! para ver si los programas te muestran algún tipo de error.

Si no hay más pistas, es difícil... pueden ser muchas cosas...
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Notapor kidd » 2009-05-12 14:33 @648

¿Usas formularios HTML para enviar los datos?
Uriel Lizama Perl programmer fundador de Perl en Español
Perl Programming Language
Avatar de Usuario
kidd
Creador de Perl en Español
Creador de Perl en Español
 
Mensajes: 1166
Registrado: 2003-10-15 16:52 @744
Ubicación: México

Notapor salva » 2009-05-13 06:13 @300

Yo, en tu lugar, para ver qué está fallando, quitaría el binmode() (temporalmente) y comprobaría el resultado de las llamadas a print() y a close():

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
...
print UPLOADFILE or print STDERR "print failed: $!\n";
...
close UPLOADFILE or print STDERR "close failed: $!\n";
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


El problema también puede deberse a que realmente no se esté enviando el fichero. Alguna forma habrá de comprobar si falla...

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
my $upload_filehandle = $q->upload("file");
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
Avatar de Usuario
salva
Perlero nuevo
Perlero nuevo
 
Mensajes: 200
Registrado: 2008-01-03 15:19 @680

Solucionado

Notapor pseudemys » 2009-05-14 16:16 @720

¿Que creen? Tenían razón... el filesystem estaba lleno, el problema es que me fui con una finta, ejecutando un df -h me salía algo similar a esto:

Código: Seleccionar todo
    Filesystem            Size    Used   Avail      Use%     Mounted on
    /dev/sdb4              37G    25G    11G      70%       /home
    /dev/sdb5              15G    14G    0M        100%     /var


¿Qué pasaba? Que los archivos (y sus cgi respectivos) se almacenan en /home pero los logs de errores en /var/log/error y nunca me pasó por la cabeza que pudieran estar estorbándose mutuamente. Hay un log que crece demasiado y fue el que lleno el filesystem. Ya fue reducido a 0 y se solucionaron los problemas.

Lo que no entiendo es qué tiene que ver si estoy utilizando un filesystem el otro lo limitará y lo más desagradable es que no mostraba ningún mensaje de error ni warning... ¡¡que alguien me explique!! Gracias por la ayuda de todos.
Nadie es libre, hasta los pájaros están encadenados al cielo - Bob Dylan. Creo que a Stallman no le agrada mucho esa frase.
Avatar de Usuario
pseudemys
Perlero nuevo
Perlero nuevo
 
Mensajes: 5
Registrado: 2009-05-11 16:01 @709
Ubicación: México

Notapor explorer » 2009-05-15 03:58 @207

Pues eso sí que es raro... si hay espacio libre en tu sistema de ficheros, debería dejarte escribir en él.

Se me ocurre que... en realidad, no estás en /home, sino en /var/home.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14480
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España


Volver a Intermedio

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado

cron