2011-05-29 22:13 @967 |
|
|
liceva
Perlero Nuevo
|
Registrado: 2011-05-29 22:01 @959 Mensajes: 6
|
|
|
Problemas con mi código CGI en hosting
|
Tengo un problema al ejecutar la sig. ruta donde enlaza a un cgi (report.cgi): http://www.liceva.mx/index.html. Esta página es un ejemplo de reporte para un directorio, en donde los campos pueden ser llenados con la información que sea y al momento de dar clic en el botón de enviar, éste generará el reporte. Pero no lo hace. Les expliqué esto a mi proveedor de la página y me dice que aparece este log en Apache: [Sat May 28 13:25:48 2011] [error] [client 189.186.146.76] Premature end of script headers: report.cgi, referer: http:liceva.mxindex.html Es curioso, porque conseguí un host provisional en donde están los mismos archivos anteriormente citados, este es mi ejemplo: http://liceva.dyndns.org/eva y en este lugar corre perfectamente. Ahora bien, necesito que me ayuden a encontrar la solución a mi problema ya que desconozco el porqué no se carga en mi host y mi proveedor dice que es por el código. En caso que sean los permisos de ellos, ¿qué es lo que tienen que ajustar? Les agradeceré su apoyo.
|
2011-05-30 03:25 @184 |
|
|
 |
explorer
Administrador
|
Registrado: 2005-07-24 18:12 @800 Ubicación: Valladolid, España Mensajes: 10271
|
|
|
Re: Problemas con mi código CGI en hosting
|
Bienvenido a los foros de Perl en español, liceva. En el código aparece: <form id="form1" name="form1" method="post" action= report.cgi>Quizás deberías indicar la ruta hacia report.cgi. Es decir, si está colocado en el raíz del sitio, pon "/report.cgi". Si está dentro de la carpeta cgi-bin, pon "/cgi/report.cgi". De todas maneras, el error indica que sí ha conseguido ejecutar el cgi. Indica que, al ejecutarlo, no ha encontrado en la respuesta la clásica cabecera HTTP, si no que ha encontrado algo distinto. Es muy posible que el programa haya generado un aviso o un error, y sale antes del resto de la salida. Te recomiendo que uses el módulo CGI::Carp para que el error salga en la pantalla del navegador. Mira en ejemplo en mi CGI mínimo.
_________________ JF^D Perl programming
|
2011-05-30 10:01 @459 |
|
|
liceva
Perlero Nuevo
|
Registrado: 2011-05-29 22:01 @959 Mensajes: 6
|
|
|
Re: Problemas con mi código CGI en hosting
|
Gracias por su respuesta, ya corrí el CGI mínimo en http://www.liceva.mx/cgi-bin/minimo.cgiy corre sin problemas. Sin embargo, veo que usa una programación un poco distinta a la que acostumbro a hacer. Aquí mi código de http://www.liceva.mx/cgi-bin/report.cgi: # Analizar Variables Capturadas ############################################################################################# print "Content-type: text/html\n\n"; use cgi; $query = new CGI; $n_nombre = $query->param("Nom_D"); $n_domicilio = $query->param("Dom_D"); $n_telefono = $query->param("Tel_D"); # Resultados en formato HTML ############################################################################################ # Validación ############################################################################################# if ("$n_nombre" eq "") { print "Favor de llenar campo Nombre"; exit; } if ("$n_domicilio" eq "") { print "Favor de llenar campo Domicilio"; exit; } # # Mensaje ############################################################################################# $mensaje = ""; $mensaje .= "$n_nombre con domicilio <br>"; $mensaje .= "$n_domicilio<br>"; $mensaje .= "Telefono: $n_telefono"; print $mensaje; exit; Dígame si tengo algún problema con mi código, por favor.
|
2011-05-30 10:42 @488 |
|
|
liceva
Perlero Nuevo
|
Registrado: 2011-05-29 22:01 @959 Mensajes: 6
|
|
|
Re: Problemas con mi código CGI en hosting
|
Gracias por su apoyo. Entonces ¿¿tendré que cambiar algunos parámetros de mi programación?? Porque, ¿cuál es la diferencia de que mi código sí trabaje bien en un host ( http://www.liceva.dyndns.org/eva) y en otro no ( http://www.liceva.mx)?? Ya que su forma de programar corre sin problemas en el host que mis programas marcan errores al leer.
|
2011-05-30 20:28 @894 |
|
|
liceva
Perlero Nuevo
|
Registrado: 2011-05-29 22:01 @959 Mensajes: 6
|
|
|
Re: Problemas con mi código CGI en hosting
|
|
Lo utilicé, agregándolo con los otros módulos, pero no me manda ningun error de log.
Ahora si perdí la brújula.
#!/usr/bin/perl use CGI qw(:standard ); use CGI::Carp qw(fatalsToBrowser); use cgi; $query = new CGI; $n_nombre = $query->param("Nom_D"); $n_domicilio = $query->param("Dom_D"); $n_telefono = $query->param("Tel_D");
print header, start_html('CGI REPORT'), h1('CGI REPORT'), hr, if ($n_nombre eq ") { hr, p ('Favor de llenar campo Nombre'), hr; }
if ($n_domicilio eq ") { hr, p ('Favor de llenar campo Domicilio'), hr; } # # Mensaje ############################################################################################# $mensaje = ""; $mensaje .= "$n_nombre con domicilio <br>"; $mensaje .= "$n_domicilio<br>"; $mensaje .= "Telefono: $n_telefono";
print $mensaje; exit;
Necesito que me ayude a comprender estas sintaxis que son nuevas para mi. Agradezco su apoyo.
|
2011-05-30 20:34 @898 |
|
|
 |
explorer
Administrador
|
Registrado: 2005-07-24 18:12 @800 Ubicación: Valladolid, España Mensajes: 10271
|
|
|
Re: Problemas con mi código CGI en hosting
|
Ya vi el problema... El módulo cgi no existe... en realidad es CGI (en mayúsculas). Quita la línea del 'use cgi;'. El verdadero módulo CGI lo estás cargando en la segunda línea del programa. Otro detalle: estás mezclando las dos formas de usar el módulo CGI: funcional y la orientada a objetos. Es mejor que solo uses una de las dos. Aparte, hay errores de programación muy graves (el programa no funcionará). El programa quedaría así: Using perl Syntax Highlighting #!/usr/bin/perl
use CGI qw(:standard );
use CGI::Carp qw(fatalsToBrowser);
$n_nombre = param("Nom_D");
$n_domicilio = param("Dom_D");
$n_telefono = param("Tel_D");
print
header,
start_html('CGI REPORT'),
h1('CGI REPORT'),
hr,
;
if ($n_nombre eq '') {
print
hr,
p('Favor de llenar campo Nombre'),
hr,
;
}
if ($n_domicilio eq '') {
print
hr,
p('Favor de llenar campo Domicilio'),
hr,
;
}
#
# Mensaje
#############################################################################################
$mensaje = "$n_nombre con domicilio <br>";
$mensaje .= "$n_domicilio<br>";
$mensaje .= "Telefono: $n_telefono";
print $mensaje;
print end_html;
print "\n";
_________________ JF^D Perl programming
|
2011-05-30 21:00 @916 |
|
|
liceva
Perlero Nuevo
|
Registrado: 2011-05-29 22:01 @959 Mensajes: 6
|
|
|
Re: Problemas con mi código CGI en hosting
|
|
Aún así con el código corregido, no me quiere correr la aplicación en mi página.
Internal Server Error The server encountered an internal error or misconfiguration and was unable to complete your request. Please contact the server administrator to inform of the time the error occurred and of anything you might have done that may have caused the error.
More information about this error may be available in the server error log.
El módulo use CGI::Carp qw(fatalsToBrowser); no muestra ningún error del sistema. No puedo saber cuál es el problema.
|
2011-05-30 21:15 @927 |
|
|
 |
explorer
Administrador
|
Registrado: 2005-07-24 18:12 @800 Ubicación: Valladolid, España Mensajes: 10271
|
|
|
Re: Problemas con mi código CGI en hosting
|
El error dice que en el error.log del servidor web hay más información de lo que ha ocurrido. Antes de subir el programa al alojamiento que tienes contratado, puedes comprobar si la sintaxis del programa es correcta. Haz un perl -c code_26382.pl desde la línea de comandos (cambiando code_26382.pl por el nombre de tu programa). Si Perl ve que todo está bien, saldrá un mensaje de Ok. Y si no, saldrá un error en pantalla. También puedes probar a ejecutar el programa en tu propio ordenador: Using bash Syntax Highlighting explorer@casa:~/Documentos/Desarrollo> perl code_26382.pl Nom_D=Joaquin Dom_D=Cascajares Tel_D=983441271
Content-Type: text/html; charset=ISO-8859-1
<!DOCTYPE html
PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en-US" xml:lang="en-US">
<head>
<title>CGI REPORT</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
</head>
<body>
<h1>CGI REPORT</h1><hr />Joaquin con domicilio <br>Cascajares<br>Telefono: 983441271
</body>
</html>
Observa que hemos pasado los argumentos en la propia línea de ejecución del programa, y el resultado sale perfecto.
_________________ JF^D Perl programming
|
2011-05-30 22:16 @970 |
|
|
liceva
Perlero Nuevo
|
Registrado: 2011-05-29 22:01 @959 Mensajes: 6
|
|
|
Re: Problemas con mi código CGI en hosting
|
Ya corrió mi cgi ¡Yupiiiiii! Si quiere comprobarlo para que vea qué bonito se ve... http://www.liceva.mx/index.html
|
2011-07-21 20:32 @897 |
|
|
makhix
Perlero Nuevo
|
Registrado: 2009-08-06 15:13 @675 Mensajes: 26
|
|
|
Re: Problemas con mi código CGI en hosting
|
|
Hola buenas noches.
Mi pregunta ronda en torno a las pequeñas diferencias entre correr tus cgi en un servidor local y hacerlo en un hosting.
El tema es que estoy por contratar un servicio de hosting y me parece muy bueno el servicio y con precio acorde, puedo instalar yo mismo los módulos de Perl y manejar un par de cosas más. Esta gente me dio un mes para testear si era lo que realmente necesitaba, pero cuando quise migrar las páginas ya hechas y probadas localmente surgieron errores, pequeños, quizás alguna comilla u otra tontería y me falta todavía solucionar un pequeño inconveniente que pude reducir hasta inferir que se centra en la asignación que hace el módulo HTML::TagParser a un array de los tags en cuestión.
Sin más preámbulos.
my $html = HTML::TagParser->new($url); my @img = $html->getElementsByTagName("img"); my @p = $html->getElementsByTagName("p");
Al imprimir por pantalla $html, me tira "HTML::TagParser=HASH(0x9448218)".
Los valores de @img y @p son -1.
¿Alguno tiene alguna idea?, porque a mi ya se me acabaron.
Gracias.
|
2011-07-22 08:25 @392 |
|
|
makhix
Perlero Nuevo
|
Registrado: 2009-08-06 15:13 @675 Mensajes: 26
|
|
|
Re: Problemas con mi código CGI en hosting
|
Buenos días, explorer, gracias por la prontitud en tu respuesta, como siempre. Este es el código que extrae los valores del @img: Using perl Syntax Highlighting my $html = HTML::TagParser->new($url);
my @img = $html->getElementsByTagName("img");
my @p = $html->getElementsByTagName("p");
foreach my $elem1 (@img) {
my $attr1 = $elem1->attributes;
foreach my $key ( sort keys %$attr1 ) {
if ( $key eq "height" && $attr1->{$key} == 100 ) {
if ( $attr1->{src} =~ m/$filtro/g ) {
push( @src, $attr1->{src} );
push( @alt, $attr1->{alt} );
}
}
}
}
foreach my $elem2 (@p) {
my $attr2 = $elem2->attributes;
my $text2 = $elem2->innerText;
foreach my $key ( sort keys %$attr2 ) {
if ( $attr2->{$key} eq "product_price" ) {
$text2 =~ s/\$//g;
$text2 =~ s/(.+\..+)Now (.+\..+)/$2/g;
my $inc = ( $text2 / 100 ) * $GANANCIA;
$valor_final = $text2 + $inc;
$valor_final = sprintf( "%.2f", $valor_final );
push( @txt, $valor_final );
}
}
}
Por favor no te fijes en la elegancia, todavía es una prueba. Gracias de antemano.
|
| 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
|
|
Socializa |
 |
|