• Publicidad

Error 500 - CGI - Error lógico

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

Error 500 - CGI - Error lógico

Notapor Rosnel » 2013-05-14 11:35 @524

Hola, buenas. :D ¡Soy nueva en este foro! y me gustaría presentar mi duda. :(

Estoy elaborando un programa el cual me permite traer ciertos dados al insertar a través de la URL una variable. Mi problema es que al ejecutar me presenta un error 500. Investigando por Internet encontré las posibles fallas, una de las que no he podido solventar es la de los errores lógicos.

¿Estos errores pueden ser los causantes del 500 Internal Server Error? :?:
¿Cómo puedo solventarlo? :?:
¿Cómo lo interpreto? :?:

Al ejecutar el comando perl -w archivo.cgi me genera:

Sintáxis: [ Descargar ] [ Ocultar ]
Using text Syntax Highlighting
Content-Type: text/html

Content-Type: text/html; charset=ISO-8859-1

HASH(0x8e96618)<html>
<head>
<link rel="stylesheet" href="http://pagina/Include/tyl.css" type="text/css" />
</head>
<body>
<table border="1" cellpadding="2px" align="center" class="in">
        <tr>
                <th style="text-align: left">EstOpe </td>
Use of uninitialized value in string eq at archivo.cgi line 199.
Use of uninitialized value in print at archivo.cgi line 202.
red"></td>
        </tr>
        <tr>
                <th style="text-align: left">EsAdmo</td>
Use of uninitialized value in string eq at archivo.cgi line 207.
Use of uninitialized value in print at archivo.cgiline 211.
                <td style="color:red"></td>
        </tr>
        <tr>
                <th style="text-align: left"></td>
                <td>N/D</td>
        </tr>
        <tr>
                <th style="text-align: left">Vlc Real</td>
                <td>N/D</td>
        </tr>
        <tr>
                <th style="text-align: left">Vel M&aacute;xima</td>
                <td>N/D</td>
        </tr>
</table>
</body>
</html>
Coloreado en 0.000 segundos, usando GeSHi 1.0.8.4


¡Gracias por la ayuda!
(\_/)
(°.°)
c(”)(”) Rosnel
Rosnel
Perlero nuevo
Perlero nuevo
 
Mensajes: 8
Registrado: 2013-05-14 10:52 @494

Publicidad

Re: Error 500 - CGI - Error lógico

Notapor explorer » 2013-05-14 12:09 @547

Bienvenida a los foros de Perl en Español, Rosnel.

Que el programa te haya dado una respuesta, y al mismo tiempo un error 500, no lo acabo de entender... lo normal es que si ocurre un error 500, no se produzca salida ninguna...

Para saber qué es lo que provoca el error 500 debes a) mirar en el archivo error.log del servidor web, para ver los mensajes de error que ha provocado la ejecución del programa, y/o b) con la ayuda del módulo CGI::Carp y la opción 'fatalsToBrowser' (mira mi CGI mínimo).

En el resultado veo una serie de problemas:
  • HASH(0x8e96618) - esto indica que estás sacando un hash con un print(), antes del código HTML, que seguro que no es lo que quieres hacer
  • "Use of uninitialized value ..." - estos mensajes los provoca la opción '-W', que es la que activa los 'warnings' en el programa. Perl te está avisando de que algo no está bien. En concreto, nos dice que una variable la estás utilizando en una comparación 'eq' y en una salida con print(), y esa variable no ha sido inicializada (nunca se le ha dado un valor), así que es una clara sospecha de que algo estás haciendo mal
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: Error 500 - CGI - Error lógico

Notapor Rosnel » 2013-05-14 15:18 @679

¡Hola!

Este es mi llamado a cgi pero no me lee el parámetro de entrada desde la URL y me sigue generando el error 500. ¿Me podéis chequear a ver si estoy colocando algo mal...?

#!/usr/bin/perl

use CGI;
our $q = new CGI;

print("Content-Type: text/html\n\n");

our $addr = $q->param('addr'); #parametro que entra desde la URL
print $addr;

our $message = &process_request($addr);
print $q->header, # create the HTTP header
$message; # return value

my $error = $q->cgi_error;
if ($error) {
print $q->header(-status=>$error),
$q->start_html('Problems'),
$q->h2('Request not processed'),
$q->strong($error);
exit 0;
}
sub process_request {
my $val = shift;
print " el valor es $val \n";

}
(\_/)
(°.°)
c(”)(”) Rosnel
Rosnel
Perlero nuevo
Perlero nuevo
 
Mensajes: 8
Registrado: 2013-05-14 10:52 @494

Re: Error 500 - CGI - Error lógico

Notapor explorer » 2013-05-14 15:37 @692

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl
  2. use CGI;
  3. use CGI::Carp qw(fatalsToBrowser);
  4.  
  5. my $q = CGI->new;
  6.  
  7. my $addr = $q->param('addr');          # parámetro que entra desde la URL
  8.  
  9. my $message = process_request($addr);  # procesamos la entrada
  10.  
  11. my $error = $q->cgi_error;             # ver si hubo un error en el upload de archivos
  12.  
  13. if ($error) {
  14.     print
  15.         $q->header( -status => $error ),
  16.         $q->start_html('Problems'),
  17.         $q->h2('Request not processed'),
  18.         $q->strong($error),
  19.         $q->end_html,
  20.         ;
  21. }
  22. else {
  23.     print
  24.         $q->header,
  25.         $q->start_html('All Ok'),
  26.         $q->h2('Results'),
  27.         $q->p($q->strong($message)),
  28.         $q->end_html,
  29.         ;
  30. }
  31.  
  32. sub process_request {
  33.     my $val = shift;
  34.     return $val;
  35. }
Coloreado en 0.007 segundos, usando GeSHi 1.0.8.4

Fíjate: reunimos el momento de la salida hacia el exterior (print) solo cuando estamos seguros de lo que queremos imprimir. Y solo en esos sitios.

Recuerda que, todo lo que saques hacia la salida estándar (print) irá hacia el navegador del usuario, y hay que seguir una serie de reglas para hacerlo (primero el header(), luego todo lo demás). Si quieres sacar información para saber qué está haciendo el programa (trazar el programa), puedes usar la función warn(), que sacará el texto hacia la salida estándar de error (en el caso de un CGI, irán a parar al archivo error.log del servidor web).
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: Error 500 - CGI - Error lógico

Notapor danimera » 2013-05-15 06:04 @294

Posiblemente sea tema de permisos si está alojado en un alojamiento...
y si es con Apache, generalmente tienen que estar los ficheros en el directorio cgi-bin/
100% Telch - Perl Web Programming
Cali PerlMongers: http://cali.pm.org
Avatar de Usuario
danimera
Perlero frecuente
Perlero frecuente
 
Mensajes: 871
Registrado: 2005-06-23 19:02 @834
Ubicación: Colombia


Volver a Web

¿Quién está conectado?

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