Foros del Web » Programación para mayores de 30 ;) » Programación General »

No funciona desde web

Estas en el tema de No funciona desde web en el foro de Programación General en Foros del Web. Hola estoy intentando colocar un pequeño contador y el problema que tengo es q no se me actualiza el fichero. Lo he probado desde la ...
  #1 (permalink)  
Antiguo 22/04/2006, 13:07
 
Fecha de Ingreso: enero-2006
Mensajes: 90
Antigüedad: 18 años, 4 meses
Puntos: 0
No funciona desde web

Hola estoy intentando colocar un pequeño contador y el problema que tengo es q no se me actualiza el fichero. Lo he probado desde la shell y funciona correctamente, pero desde la web solo me muestra el un valor que no cambia
El fichero tiene permisos
Aqui les dejo el codigo, bajado de una web, espero que puedan ayudarme

Cita:
#!/usr/bin/perl
print "Content-type: text/html\n\n";
# cargar la cuenta actual e incrementarla
open(F, "cuenta.dat");
$contador = <F>;
print $contador;
close(F);
#Incremento del contador
$contador ++ ;
# guardar la nueva cuenta
open(F, ">cuenta.dat");
print F "$contador";
close(F);
  #2 (permalink)  
Antiguo 24/04/2006, 09:24
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 2 meses
Puntos: 90
El código parece ser correcto, no encuentro ningún error...

Se me hace difícil pensar que no funcione, talvés debes darle al archivo cuenta.dat permisos de escritura, debe ser eso, que esté para solo lectura...

Dale chmod 766

Saludos
__________________
Esteban Quintana
  #3 (permalink)  
Antiguo 24/04/2006, 13:42
 
Fecha de Ingreso: enero-2006
Mensajes: 90
Antigüedad: 18 años, 4 meses
Puntos: 0
Gracias por contestar, pero si le doy si le doy permisos 777 a cuenta.dat y me hace lo mismo desde el shel funciona pero desla web no
  #4 (permalink)  
Antiguo 25/04/2006, 09:42
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 2 meses
Puntos: 90
Coloca opciones de error, como ser

open(F, ">cuenta.dat") || print "No se pudo habrir el archivo para escribirlo";

A ver si salta algún error, supuestamente está OK...
__________________
Esteban Quintana
  #5 (permalink)  
Antiguo 27/04/2006, 16:25
 
Fecha de Ingreso: enero-2006
Mensajes: 90
Antigüedad: 18 años, 4 meses
Puntos: 0
Hola gracias por contestar
Justamente me sale ese error al poner esa opcion
Que hago

Gracias de nuevo
  #6 (permalink)  
Antiguo 28/04/2006, 05:59
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 2 meses
Puntos: 90
Pues la verdad no tengo idea, checkeaste que el directorio donde está el archivo tambien tenga permisos de escritura, es lo único que se me ocurre...

Si quieres pasame el script que lo pruebo yo en mi server, así sabremos si el problema está en el script o en la configuración de tu server...

Saludos
__________________
Esteban Quintana
  #7 (permalink)  
Antiguo 28/04/2006, 12:59
 
Fecha de Ingreso: enero-2006
Mensajes: 90
Antigüedad: 18 años, 4 meses
Puntos: 0
Bueno sigue sin funcionar.
La carpeta le cambie los permisos a 777 y el propietario a apache y sigue sin poder escribir en el fichero.
El script es ese del primer mensaje.
Esta lineas fue las que modifique en fichero de apache

Código:
ServerName 192.168.2.2:80
Luego dentro de 
  <Directory "/var/www/html">
       Options Indexes FollowSymLinks -->esto venia por defecto
   
  Añadi esto
        Options +ExecCGI +Includes
        AddHandler cgi-script .cgi .pl
        AddType text/html .shtml
        AddHandler server-parsed .shtml
Me falta algo?
  #8 (permalink)  
Antiguo 01/05/2006, 12:45
 
Fecha de Ingreso: mayo-2003
Mensajes: 328
Antigüedad: 21 años
Puntos: 0
Hola:

Lo primero que tenemos que hacer es ver donde se encuentra el error, para ello hay que hacer una verificación de errores:

Código:
#!/usr/bin/perl -w

use strict;
use CGI::Carp qw(fatalsToBrowser);

print "Content-type: text/html\n\n";

# cargar la cuenta actual e incrementarla
open my $in, '<', 'cuenta.dat' or die("No se pudo leer el archivo: $!");
my $contador = <$in>;
close $in;

 print $contador, "\n";

#Incremento del contador
$contador++;

# guardar la nueva cuenta
open my $out, '>', 'cuenta.dat' or die("No se pudo abrir archivo para escritura: $!");
print {$out} $contador;
close $out;

exit(1);
Nota que le agregamos los warnings y usamos el pragma strict. Esos son hábitos que te conviene tomar para que tus códigos sean más robustos.


Saludos
__________________
Uriel Lizama, Perl Developer

Aprende Perl en Perl en Español.
  #9 (permalink)  
Antiguo 03/05/2006, 02:07
 
Fecha de Ingreso: enero-2006
Mensajes: 90
Antigüedad: 18 años, 4 meses
Puntos: 0
He puesto tu script, puesto permisos totales al los archivos contador.pl y cuenta.dat y me muestra este mensaje

Código:
4
Software error:

No se pudo abrir archivo para 
escritura: Permission denied at /var/www/html/contador.pl line 19.

For help, please send mail to the webmaster (root@localhost), giving this error message and the time and date of the error.
  #10 (permalink)  
Antiguo 03/05/2006, 06:41
Avatar de monoswim
$moderador{'Esteban'}
 
Fecha de Ingreso: febrero-2002
Ubicación: Buenos Aires - Argentina
Mensajes: 8.762
Antigüedad: 22 años, 2 meses
Puntos: 90
open my $out, '>', 'cuenta.dat' or die("No se pudo abrir archivo para escritura: $!");

Esa es la línea que causa problemas, checkea qu tanto el archivo como la carpeta html tengan permisos de ejecución...Oye, no usas la carpeta de CGI-BIN, generalmente solo se pueden ejecutar CGI en esa carpeta, y la de htmo se usan para imágenes y HTMLs...

Espero que te sirva

Saludos
__________________
Esteban Quintana
  #11 (permalink)  
Antiguo 04/05/2006, 14:44
 
Fecha de Ingreso: enero-2006
Mensajes: 90
Antigüedad: 18 años, 4 meses
Puntos: 0
La carpeta pertenece a apache y tiene permisos para todos
¿quieres decir que es posiblle que no funcione correctamente por no estar en el directorio cgi-bin? porque funcionar funciona, lo que no hace es esa linea q comentas tú
Bueno, cuando tenga un rato pruebo a ponerlo en cgi-bin

Saludos

Gracias
  #12 (permalink)  
Antiguo 05/05/2006, 20:55
 
Fecha de Ingreso: mayo-2003
Mensajes: 328
Antigüedad: 21 años
Puntos: 0
El error es porque por alguna razón no tienes permiso de escritura para el archivo que quieres editar.

Si el archivo tiene permisos de escritura para todos, entonces verifica también los permisos que tiene la carpeta en donde se encuentras los archivos que quieres editar. La carpeta debe tener permiso de escritura para todos.

Saludos
__________________
Uriel Lizama, Perl Developer

Aprende Perl en Perl en Español.
  #13 (permalink)  
Antiguo 06/05/2006, 16:54
 
Fecha de Ingreso: enero-2006
Mensajes: 90
Antigüedad: 18 años, 4 meses
Puntos: 0
Cita:
Iniciado por kidd
El error es porque por alguna razón no tienes permiso de escritura para el archivo que quieres editar.

Si el archivo tiene permisos de escritura para todos, entonces verifica también los permisos que tiene la carpeta en donde se encuentras los archivos que quieres editar. La carpeta debe tener permiso de escritura para todos.

Saludos
Pues no se que decirte creo haberlo hecho y seguido con el mismo problema, no obstante volvere a probar
Gracias
  #14 (permalink)  
Antiguo 12/05/2006, 13:42
 
Fecha de Ingreso: enero-2006
Mensajes: 90
Antigüedad: 18 años, 4 meses
Puntos: 0
Bueno. les escribo para decirles que encotre la solución. Lo que hice fue desintalar la version de apache que venia con el fedora 3 (que tambien me dio algun otro problema) y me baje un nuevo apache y lo instale y no hubo ningu problema

Gracias kidd y monoswim os agradezco vuestra ayuda
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:57.