• Publicidad

Problema con Base de Datos en TXT

Todo lo relacionado con el desarrollo Web con Perl: desde CGI hasta Mojolicious

Problema con Base de Datos en TXT

Notapor jrj06 » 2006-03-30 09:25 @434

Hola a todos/as,

Soy nuevo en esto ;-), y he intentado hacer pruebas con unos cgis copiados de un libro ("Superutilidades para Webmasters"), muy interesantes en la teoría, en la que el usuario puede generar las bd que desee desde un html, y trabajar con ellas posteriormente.

Cuando rellenamos los datos en el html, llama a "crearbd.cgi":

#!/usr/bin/perl

require 'cgi-lib.cgi';

&obtenparametros;

print "Content-type: text/html\n\n";
$nombres=$entrada{'nombrecampos'};
$clases=$entrada{'clasecampos'};
$tipos=$entrada{'tipocampos'};

$basedatos=$entrada{'basededatos'};
$ident=$entrada{'identificacion'};
$f_creac=$entrada{'fecha_creacion'};
$f_modif=$entrada{'fecha_modificacion'};

$fichero='>'.$basedatos.'.cfg';
open (CONFIG,$fichero);
@nombres=split(/\|/,$nombres);
@clases=split(/\|/,$clases);
@tipos=split(/\|/,$tipos);

$cadenanombres="\@nombre_campos= (\"$ident\" ";
$cadenamultiples="\@campos_multiples= ( ";
$cadenanumericos="\@campos_numericos= ( 0 ";
$cadenafechas="\@campos_fecha= (";
$cadenaimagenes="\@campos_imagen=( ";
$cadenareferencias="\@campos_referencia=( ";

for ($i=0;$i<=$#nombres;$i++)
{
$num_campo=$i+1;
$cadenanombres.=", \"$nombres[$i]\" ";
if ($clases[$i] eq 'numero')
{
$cadenanumericos.=", $num_campo ";
}
elsif ($clases[$i] eq 'fecha')
{
$cadenafechas.=" $num_campo ,";
}
elsif ($clases[$i] eq 'enlace')
{
$cadenareferencias.=" $num_campo ,";
}
elsif ($clases[$i] eq 'imagen')
{
$cadenaimagenes.=" $num_campo ,";
}

if ($tipos[$i] eq 'vm')
{
$cadenamultiples.=" $num_campo ,";
}
}

$num_fcrea=$i+1;
$num_fmodif=$i+2;

print CONFIG "\$campo_id = 0; \n";
print CONFIG "\$campo_fecha_creac = $num_fcrea; \n";
print CONFIG "\$campo_fecha_modif = $num_fmodif; \n\n";

$cadenanombres.= ", \"$f_creac\" , \"$f_modif\" ); \n\n";
print CONFIG $cadenanombres;

$cadenafechas.= " $num_fcrea , $num_fmodif); \n";
print CONFIG $cadenafechas;

$cadenanumericos.= "); \n";
print CONFIG $cadenanumericos;

chop ($cadenareferencias);
$cadenareferencias.= "); \n";
print CONFIG $cadenareferencias;

chop ($cadenaimagenes);
$cadenaimagenes.= "); \n\n";
print CONFIG $cadenaimagenes;

chop ($cadenamultiples);
$cadenamultiples.= "); \n";
print CONFIG $cadenamultiples;
close(CONFIG);

print <<FIN_TEXTO
<HTML>
<HEAD><TITLE>CREACION DEL ESQUEMA DE LA BASE DE DATOS</TITLE></HEAD>
<BODY>
<H2 align="center">La base de datos ha sido creada con éxito</H2>
<p align=center>
Pulse <A HREF="../html/menu.html">aqui</A> para entrar en el menu...
</BODY>
</HTML>
FIN_TEXTO
;



... y el servidor me da este error:

Internal Server Error
The server encountered an internal error or misconfiguration and was unable to complete your request.

Please contact the server administrator and inform them of the time the error occurred, and anything you might have done that may have caused the error.

More information about this error may be available in the server error log.

Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.
--------------------------------------------------------------------------------
Apache Server at eoficina.es Port 80
--------------------------------------------------------------------------------

Lo que ya he hecho:

- Los cgis los subo vía ftp en modo ASCII,
- Los permisos que les doy son chmod 755,
- Controlo las mayúsculas / minusculas

En fin, os agradezco de antemano vuestra ayuda.

Un saludo,

Jaime
jrj06
Perlero nuevo
Perlero nuevo
 
Mensajes: 8
Registrado: 2006-03-30 06:35 @316

Publicidad

Notapor preiddy » 2006-03-30 09:38 @443

hola, me da la impresión que no tiene permiso de ejecución, prueba chmod +x.
Claro si la carpeta la tienes configurada para ejecutar cgi.
preiddy
Perlero nuevo
Perlero nuevo
 
Mensajes: 70
Registrado: 2006-03-29 05:43 @280
Ubicación: Madrid, España

Notapor monoswim » 2006-03-30 10:07 @463

la syntaxis me da bien...Intenta con chmod 777 depende del hosting...

otra cosa no se me ocurre...

Saludos
MonoSwim
Perl Programming Language
Avatar de Usuario
monoswim
Perlero nuevo
Perlero nuevo
 
Mensajes: 452
Registrado: 2003-11-18 16:13 @717
Ubicación: Buenos Aires

Notapor kidd » 2006-03-30 13:26 @601

Hola:

El problema puede radicar en:

Código: Seleccionar todo
#!/usr/bin/perl

require 'cgi-lib.cgi';


Debes de checar que tengas el script que estás pidiendo, es decir el 'cgi-lib.cgi'.

Otra cosa es que hace mucho que no se usa el cgi-lib, te recomiendo que cheques acerca del CGI.pm

También puedes intentar usar el módulo CGI::Carp para que los errores te los despliegue en el navegador:

Código: Seleccionar todo
use CGI::Carp qw(fatalsToBrowser);



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

Notapor jrj06 » 2006-03-31 04:28 @227

Hola,

Dos cosas, curiosas:

He "descubierto" que me faltaba una subrutina ('obtenparametros'), que según los autores del libro estaría dentro del 'cgi-lib.cgi' y que en realidad está en otro módulo, el 'pruebaparam.cgi'

Por lo tanto, lo que he hecho ha sido añadir en el script 'crearbd.cgi' , después de las líneas:

#!/usr/bin/perl
require 'cgi-lib.cgi';

coloco

require 'pruebaparam.cgi';
use CGI::Carp qw(fatalsToBrowser);

Los permisos del directorio cgi-bin son chmod 777,

En cambio, no me funciona la línea de depuración (use CGI...) y continúa dándome el mismo error genérico.
¿el módulo carp.pm es necesario ponerlo en mi directorio cgi-bin?


Saludos y muchas gracias por vuestra atención ;-)
jrj06
Perlero nuevo
Perlero nuevo
 
Mensajes: 8
Registrado: 2006-03-30 06:35 @316

Re: Problema con Base de Datos en TXT

Notapor explorer » 2006-03-31 05:22 @265

El módulo Carp.pm debes colocarlo en cualquiera de los directorios indicados por la variable interna @INC
Código: Seleccionar todo
perl -le 'print "@INC"'
Entre los directorios verás el '.' que es el actual.
Lo normal es que si se utiliza algún sistema de instalación de módulos desde CPAN, entonces esté colocado correctamente. Para comprobarlo:
Código: Seleccionar todo
perl -MCGI::Carp -e 1
Una cosa. Ejecuta el código directamente, si puedes, para saber qué error devuelve el Perl.
Aconsejable incorporar
Código: Seleccionar todo
use warnings;
use diagnostics;
al principio del código.
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 jrj06 » 2006-04-03 11:53 @537

Hola de nuevo,

Sigo haciendo pruebas, pero no hay manera (tranquilos, que para tozudo, yo ;-)). Os doy más info, para ver si me podeis "helpear":

- El dominio es www.vtoursoft.com,
- Para entrar en la página html, lo hago vía www.vtoursoft.com/crearbdmod.html (no le he cambiado el nombre por que en mi ignorancia no sabía si al llamarse "index.html" afectaría al script),
- He probado cambiando permisos a la carpeta cgi-bin, pero nada,
- La ayuda que me remite 'explorer', no se cómo probarlas, ya que es en el servidor, no en local,

Si a alguien le interesa, le puedo enviar una copia del código.

Consultas:

- ¿Cómo puedo comprobar si tiene el servidor instalado el módulo carp.pm?

- Si yo tengo un script 'nn.cgi', se referencia en otro script únicamente con las líneas " require 'nn.cgi' " y " &SubrutinaDentroDeNn; "?

Saludos,
Jaime
jrj06
Perlero nuevo
Perlero nuevo
 
Mensajes: 8
Registrado: 2006-03-30 06:35 @316

Re: Problema con Base de Datos en TXT

Notapor explorer » 2006-04-03 12:42 @571

jrj06 escribiste:- He probado cambiando permisos a la carpeta cgi-bin, pero nada,
Los permisos para la carpeta debería ser 755, al menos. Y para el cgi, también.
jrj06 escribiste:- La ayuda que me remite 'explorer', no se cómo probarlas, ya que es en el servidor, no en local,
O sea, que no tienes acceso al servidor, de forma directa.
jrj06 escribiste:Si a alguien le interesa, le puedo enviar una copia del código.
A mi me mandas una.
jrj06 escribiste:- ¿Cómo puedo comprobar si tiene el servidor instalado el módulo carp.pm?
Código: Seleccionar todo
#!/usr/bin/perl -w
eval {
    require CGI::Carp;
} or die "ERROR al cargar el módulo CGI::Carp: $!\n";
(Aunque hay otras maneras, claro)
jrj06 escribiste:- Si yo tengo un script 'nn.cgi', se referencia en otro script únicamente con las líneas " require 'nn.cgi' " y " &SubrutinaDentroDeNn; "?
Si... siempre y cuando a la hora de hacer el "require" el script devuelva un valor distinto de 0 (o nulo). Por eso habrás visto que casi todos los módulos acaban con la línea 1;. Haz eso mismo si tu nn.cgi no lo tiene.

¿Porque no empezamos por lo básico? ¿Has ejecutado alguna vez algún cgi en ese servidor? Hay algunos servidores que ni siquiera tienen el Perl instalado, o servicio de cgi para usuarios...
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 Web

¿Quién está conectado?

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