• Publicidad

Problemas al escribir un fichero

¿Apenas comienzas con Perl? En este foro podrás encontrar y hacer preguntas básicas de Perl con respuestas aptas a tu nivel.

Problemas al escribir un fichero

Notapor jomamarca » 2012-05-12 11:34 @523

Hola a todos, tengo un problema.

Tengo en mi servidor varios archivos ".dat" que puedo abrir y leer, pero cuando intento abrir el fichero para poder escribir, me dice que no lo puede abrir.

Tengo todo alojado en ARSYS y me comentan que no puedo escribir ficheros, estoy intentando escribir en el fichero los datos de los clientes que se den de alta a través de la web.

Si no lo puedo hacer escribiendo directamente, ¿cómo tengo que hacerlo? ¿Alguien sabe si se puede escribir o no en Arsys? Tengo la sensación de que ni ellos mismos lo tienen claro, ya me han dado varias contestaciones casi todas contradictorias.

Gracias
jomamarca
Perlero nuevo
Perlero nuevo
 
Mensajes: 13
Registrado: 2012-05-12 11:01 @500

Publicidad

Re: Problemas al escribir un fichero

Notapor explorer » 2012-05-12 21:08 @922

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

jomamarca escribiste:Tengo en mi servidor varios archivos ".dat" que puedo abrir y leer, pero cuando intento abrir el fichero para poder escribir, me dice que no lo puede abrir.
El contenido de la variable $! almacena el texto del último error.

jomamarca escribiste:Tengo todo alojado en ARSYS y me comentan que no puedo escribir ficheros, estoy intentando escribir en el fichero los datos de los clientes que se den de alta a través de la web.

Si no lo puedo hacer escribiendo directamente, ¿cómo tengo que hacerlo? ¿Alguien sabe si se puede escribir o no en Arsys? Tengo la sensación de que ni ellos mismos lo tienen claro, ya me han dado varias contestaciones casi todas contradictorias.
Depende del tipo de servicio que tengas contratado con ellos, podrás escribir en tu directorio personal o no. Si solo tienes contratado un servicio web básico, seguramente la única manera de guardar información en el servidor sea usando una base de datos, que activarás desde el mismo panel de control.

En la mayor parte de las ocasiones, podrás escribir en aquellos directorios donde haya permiso de escritura para el usuario que ejecuta el servidor web, pero en los sistemas prefabricados de estas empresas, eso no es lo que suele pasar: el servidor web estará ejecutada por www-data o httpd, y los directorios estarán puestos a nombre del usuario virtual que te representa, así que al ejecutar el CGI, no tendrás permiso para nada más que leer.

Ahí la solución sería dar permisos de escritura al directorio en donde quieres que el CGI escriba. A los de Arsys les debes preguntar qué tienes que hacer para que un CGI pueda escribir en alguno de tus directorios. Si no saben responderte a esta pregunta, es que estás delante de personas que venden melones: realmente no saben lo que están vendiendo. O no saben siquiera lo que es un CGI en Perl :)

Ellos solo se preocupan de que sus sistemas prefabricados funcionen, así que te aconsejarán que modifiques el CGI para que escriba en una base de datos.

Si no te convence esa solución, habla conmigo en privado y te hago una oferta de alojamiento ;)
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

Re: Problemas al escribir un fichero

Notapor jomamarca » 2012-05-14 11:06 @504

Hola, ahora desde Arsys me dicen que sí puedo escribir, que debe ser un error del programa.

el código es:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1.         my $path = '/var/www/vhost/ciacazadores.com/home/data/claves.dat';
  2.         $anadir = $FORM{'usuario'} + '\|' + $FORM{'password'} + '\|**';
  3.         chomp($anadir);
  4.         open (FILE, ">> $path") or die "No pudo abrirse: ".$path;
  5.         print FILE "$anadir";
  6.         close(FILE);
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


¿Dónde puede estar el error?
Gracias.
jomamarca
Perlero nuevo
Perlero nuevo
 
Mensajes: 13
Registrado: 2012-05-12 11:01 @500

Re: Problemas al escribir un fichero

Notapor explorer » 2012-05-14 11:34 @523

Hay que cambiar algunas cosas, pero no influyen en ningún error...

Por ejemplo, la línea 3 sobra (la variable $anadir no tiene ningún carácter de fin de línea que le hallamos puesto).

Yo usaría el módulo CGI::Carp para saber qué está pasando. Mira mi CGI mínimo para ver cómo ponerlo.

Además, cambiaría el die() de la línea 4 por esto:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. open (FILE, ">> $path") or die "No pudo abrirse $path: $!\n";
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


De esta manera, el die() saca el mensaje de error (contenido en la variable especial $!). Con la ayuda CGI::Carp, ese mensaje saldrá en la ventana del navegador.

Y si no puedes usar CGI::Carp, esos mensajes de error salen en los archivos log de la actividad web, que supongo que Arsys te estará dejando en algún directorio accesible desde fuera (por ejemplo, FTP, o desde el panel de control).
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

Re: Problemas al escribir un fichero

Notapor jomamarca » 2012-05-14 11:42 @529

Hecho, ahora me dice esto:

Software error:
No pudo abrirse /var/www/vhost/ciacazadores.com/home/data/claves.dat: No such file or directory
jomamarca
Perlero nuevo
Perlero nuevo
 
Mensajes: 13
Registrado: 2012-05-12 11:01 @500

Re: Problemas al escribir un fichero

Notapor explorer » 2012-05-14 12:32 @564

Bien, ya sabemos algo: El '>>' ha intentado abrir el archivo claves.dat y no lo ha encontrado. Y si no existía, ha intentado crearlo, y tampoco ha podido. O algo peor: no existe '/var/www/vhost/ciacazadores.com/home/data/'. :lol:

Sospecho que el servidor web no tiene permiso de escritura en el subdirectorio data/.

Yo ejecutaría antes este miniprograma:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/env perl
  2.  
  3. use CGI       qw':standard *pre';
  4. use CGI::Carp qw'fatalsToBrowser';
  5. use File::Find ();
  6.  
  7. print
  8.     header(),
  9.     start_html('Directorio completo'),
  10.     start_pre(),
  11.     ;
  12.            
  13. # for the convenience of &wanted calls, including -eval statements:
  14. use vars qw/*name *dir *prune/;
  15. *name   = *File::Find::name;
  16. *dir    = *File::Find::dir;
  17. *prune  = *File::Find::prune;
  18.  
  19. # Traverse desired filesystems
  20. File::Find::find(
  21.     {   wanted => sub {
  22.                     print "$name\n";
  23.                 },
  24.     },
  25.     '/var/www/vhost/ciacazadores.com'
  26. );
  27.  
  28. print
  29.     end_pre(),
  30.     end_html(),
  31.     ;
  32.  
  33. exit;
  34.  
  35. __END__
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Este programa sacará todos los archivos que cuelgan debajo el directorio indicado. Así podrás verificar que, realmente, existe home/data/.

O, mejor todavía: te conectas con el panel de control o por FTP, y compruebas que tanto home/ como data/ tienen los permisos de lectura y ejecución apropiados para que puedan ser accedidos por el servidor web (lo normal: un 755). Y que dentro de data/, el servidor web pueda escribir (darle un 777 al directorio data/).
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

Re: Problemas al escribir un fichero

Notapor jomamarca » 2012-05-14 12:42 @571

Efectivamente, salen todos los directorios, y claro está, los archivos están ahí, y las carpetas tienen los permisos para leer escribir y ejecutar, así que tendré que esperar a ver qué me dice el servicio técnico, ¿o puedo hacer cualquier otra cosa?
jomamarca
Perlero nuevo
Perlero nuevo
 
Mensajes: 13
Registrado: 2012-05-12 11:01 @500

Re: Problemas al escribir un fichero

Notapor explorer » 2012-05-14 12:59 @583

Intentaría escribir, a modo de prueba, en otros directorios, a ver si en alguno sí puedo.

Al menos, para delimitar dónde puede estar el fallo.

Una forma rápida de ver si se trata de un fallo de acceso por permisos de subdirectorio, sería modificar el programa para 1) entrar en ese directorio, y 2) intentar escribir en él:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. my $path = '/var/www/vhost/ciacazadores.com/home/data';
  2. chdir $path                       or die "ERROR: No puedo entrar en [$path]: $!\n";
  3.  
  4. my $archivo = "$path/claves.dat";
  5. open (FILE, ">>$archivo")         or die "ERROR: No pudo abrirse [$archivo]: $!\n";
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

Observa que, además, le he quitado el espacio en blanco de delante de $archivo, no sea que también le afecte.
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

Re: Problemas al escribir un fichero

Notapor jomamarca » 2012-05-14 14:15 @635

Nada, lo he probado con todos los directorios y siempre me dice lo mismo.
jomamarca
Perlero nuevo
Perlero nuevo
 
Mensajes: 13
Registrado: 2012-05-12 11:01 @500

Re: Problemas al escribir un fichero

Notapor jomamarca » 2012-05-16 15:52 @703

Ya está resuelto, era un error de ellos. Gracias.
jomamarca
Perlero nuevo
Perlero nuevo
 
Mensajes: 13
Registrado: 2012-05-12 11:01 @500

Siguiente

Volver a Básico

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 15 invitados