Perl en Español

  1. Home
  2. Tutoriales
  3. Foro
  4. Artículos
  5. Donativos
  6. Publicidad
 
Índice general » Mundo Perl » Web » Problema con Base de Datos en TXT Responder al tema
Nuevo tema


Página 1 de 1  [ 8 mensajes ] 
 
Nota 2006-03-30 09:25 @434

Perlero Nuevo
Registrado: 2006-03-30 06:35 @316
Mensajes: 8
Problema con Base de Datos en TXT
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


Nota 2006-03-30 09:38 @443

Perlero Nuevo
Registrado: 2006-03-29 05:43 @280
Mensajes: 62
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.


Nota 2006-03-30 10:07 @463
Avatar de Usuario
Vive para Perl en Español
Registrado: 2003-11-18 16:13 @717
Ubicación: Buenos Aires
Mensajes: 455
la syntaxis me da bien...Intenta con chmod 777 depende del hosting...

otra cosa no se me ocurre...

Saludos

_________________
MonoSwim


Nota 2006-03-30 13:26 @601
Avatar de Usuario
Creador de Perl en Español
Registrado: 2003-10-15 16:52 @744
Ubicación: México
Mensajes: 1163
Hola:

El problema puede radicar en:

Código:
#!/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:
use CGI::Carp qw(fatalsToBrowser);



Saludos

_________________
Uriel Lizama Perl programmer fundador de Perl en Español


Nota 2006-03-31 04:28 @227

Perlero Nuevo
Registrado: 2006-03-30 06:35 @316
Mensajes: 8
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 ;-)


Nota 2006-03-31 05:22 @265
Avatar de Usuario
Administrador
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España
Mensajes: 10270
El módulo Carp.pm debes colocarlo en cualquiera de los directorios indicados por la variable interna @INC
Código:
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:
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:
use warnings;
use diagnostics;
al principio del código.


Nota 2006-04-03 11:53 @537

Perlero Nuevo
Registrado: 2006-03-30 06:35 @316
Mensajes: 8
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


Nota 2006-04-03 12:42 @571
Avatar de Usuario
Administrador
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España
Mensajes: 10270
jrj06 escribió:
- 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 escribió:
- 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 escribió:
Si a alguien le interesa, le puedo enviar una copia del código.
A mi me mandas una.
jrj06 escribió:
- ¿Cómo puedo comprobar si tiene el servidor instalado el módulo carp.pm?
Código:
#!/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 escribió:
- 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...


Responder al tema  [ 8 mensajes ] 

Reglas del Foro
No puedes abrir nuevos temas en este Foro
No puedes responder a temas en este Foro
No puedes editar tus mensajes en este Foro
No puedes borrar tus mensajes en este Foro
No puedes enviar adjuntos en este Foro

Publicidad

Socializa

Síguenos por Twitter

Suscríbete GRATUITAMENTE al Boletín de Perl en Español

Saltar a:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Traducción al español por Huan Manwë para phpbb-es.com
phpBB SEO