• Publicidad

Internal Server Error, nuevo para mi

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

Internal Server Error, nuevo para mi

Notapor danimera » 2012-06-12 17:58 @790

Hay Perl... hay servidor Linux... A veces me siento la frustración y lo complejo de algo tan simple...

Tengo una aplicación que en local, en mi Optiperl funciona bien, en un hosting también me corrió bien...

Pero la subí a otro hosting y obtengo Error 500 Internal Server Error. El log solo me dice algo como:

[Tue Jun 12 17:51:24 2012] [error] [client 190.99.227.167] File does not exist: /home/expola/public_html/404.shtml, referer: http://expolatinedutour.com/index.pl

Pero resulta que cuando comento la línea de use Date::Calc qw(:all); ya no me genera ese error. Ahora, eso me pasó con algunos módulos que tenía que comentarlos, no puedo usarlos porque tengo el error 500...

¿Qué rayos podrá estar pasando? :?:
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

Publicidad

Re: Internal Server Error, nuevo para mi

Notapor explorer » 2012-06-12 18:13 @800

Esto es lo que ha pasado: el servidor web ha intentado localizar http://expolatinedutour.com/index.pl, pero no lo ha encontrado, así que ha generado un error 404. Por defecto, tiene puesto que cuando se genere un error de ese tipo debe localizar una página llamada 404.shtml en el directorio del alojamiento.

De esa manera, cada dominio puede personalizar lo que quiere que ocurra cuando suceda un error 404.

Pero lo que te interesa saber es que no ha localizado index.pl.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14476
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Internal Server Error, nuevo para mi

Notapor danimera » 2012-06-13 08:53 @412

La verdad,

ese error solo se presenta cuando uso estos 3 módulos.

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. use Date::Calc qw(:all);
  2. use CGI::Application::Plugin::Authentication;
  3. use CGI::Application::Plugin::Authorization;
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4


Una vez yo comento esos 3 módulos, ahí sí me corre la aplicación. Bueno, me sale un error de Perl, pero ya por lo menos me ejecuta la aplicación...

El caso es que a veces noto que cuando subo un .pl sencillo a hosting será porque trabajo en Windows me sale error 500, y me toca en el hosting crearlo y ahí sí funciona...

Honestamente, ya no sé qué probar ni qué hacer. Si mi aplicación corre bien en mi PC local y en otro hosting.
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

Re: Internal Server Error, nuevo para mi

Notapor explorer » 2012-06-13 10:14 @468

danimera escribiste:El caso es que a veces noto que cuando subo un .pl sencillo a hosting será porque trabajo en Windows me sale error 500, y me toca en el hosting crearlo y ahí sí funciona...
Podría ser un tema de permisos de ejecución... eso lo puedes comprobar conectándote por FTP/FTPES/SFTP/SSH y ver los permisos de ejecución.

Ayuda también tener acceso a los registros de actividad del servidor web, no solo ver los mensajes de error en el navegador. Si no tienes acceso a ellos, prueba a usar CGI::Carp (no sé cómo meterle con CGI::Application).

Es más, dentro de la familia CGI::Application debería haber algún módulo para depurado.

Lo que no entiendo es en qué afecta Date::Calc a todo esto...
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14476
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Internal Server Error, nuevo para mi

Notapor danimera » 2012-06-13 10:21 @472

Pues si yo creo que ya no soy tan novato en Perl, y pues por eso es que me preocupa...

Mi fichero, el cual llamo tiene este código:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. #!/usr/bin/perl -w
  2.  
  3. use lib('libs');
  4. use CGI qw(:all);
  5. use CGI::Carp qw(fatalsToBrowser);
  6. use warnings;
  7.  
  8.  
  9.  
  10. use MyApp::MyBase;
  11. my $q = new CGI; #nuevo objeto CGI
  12. $q->param('mode' => 'home');
  13.  
  14. my $app = MyApp::MyBase->new(QUERY => $q );
  15.  
  16. $app->cfg_file('config/config.pl');
  17. $app->run();
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Y el CGI-App, tiene este:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. package MyApp::MyBase;
  2. use base 'CGI::Application';
  3.  
  4. # Es simple, solo es crear esta estructura
  5. # usaré plugin, pero tranquila, son solo dos archivos que meteré dentro del directorio
  6. # plugin. .. el de session y el de DBI, es solo para facilitar okis
  7. use lib('../libs');
  8. use CGI qw(:all);
  9. use CGI::Carp qw(fatalsToBrowser);
  10. use warnings;
  11. use Module::Load;
  12. use SQL::Abstract;
  13. use WWW::Mechanize;
  14. use JSON;
  15. use Log::Handler;
  16. use DBI;
  17. use MIME::Lite;
  18. use Try::Tiny;
  19. #use Date::Calc qw(:all);
  20. use CGI::UploadEasy;
  21. use Image::Thumbnail;
  22. #use GD::Thumbnail;
  23.  
  24. #--------------------MODULOS Y LIBRERIAS Y PLUGINS --------------------#
  25. use strict;
  26.  
  27. use CGI::Application::Plugin::ConfigAuto (qw/cfg cfg_file/);
  28. use CGI::Application::Plugin::DBH (qw/dbh_config dbh/);
  29. use CGI::Application::Plugin::Session;
  30.  
  31.  
  32. use CGI::Application::Plugin::TT;
  33.  
  34. #use CGI::Application::Plugin::Authentication;
  35. #use CGI::Application::Plugin::Authorization;
  36. use CGI::Application::Plugin::Redirect;
  37. use CGI::Application::Plugin::Session;
  38. use CGI::Application::Plugin::Menu;
  39. #----------------------------------------------------------------------#
  40.  
  41.  
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Obviamente hay más código.

SI en estos momentos van a http://expolatinedutour.com/index.pl podrán ver que se ejecuta el script sin problemas, pero porque tengo comentado las líneas de los módulos Date::Cal, autenticación y autorización.

Y cuando les quito el comentario, ahí sí correo... Ahora en cuanto al permiso puede ser, pero nunca supe de darle un permiso a un módulo :S
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

Re: Internal Server Error, nuevo para mi

Notapor explorer » 2012-06-13 15:36 @692

Los módulos solo necesitan poder ser leídos, así que conque tengan esos permisos, vale.

En idioma Unix, sería hacer un chmod 644 modulo.pm o chmod +r modulo.pm.

A través del FTP se pueden ver esos permisos, y se pueden cambiar (bueno, depende de las facilidades de tu alojamiento).

Yo miraría el contenido del error.log...
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14476
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Internal Server Error, nuevo para mi

Notapor danimera » 2012-06-14 08:19 @388

Pues los permisos están bien, el log no me dice absolutamente nada...

Lo último que intenté fue instalar los módulos en el hosting desde una herramienta que ellos dan, pero eso no me convence.

Instalé el CGI::Application::Plugin::Authentication y como que instaló un resto de cosas, y ya no me dio más problemas... Ni con el CGI::Application::Plugin::Authorization, ahí corre la cosa, ahora viene el Date::Cal.

Me tocó poner este código que dice el hosting:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  1. BEGIN {
  2.     my $b__dir = (-d '/home/expola/perl'?'/home/expola/perl':( getpwuid($>) )[7].'/perl');
  3.     unshift @INC,$b__dir.'5/lib/perl5',$b__dir.'5/lib/perl5/i686-linux',map { $b__dir . $_ } @INC;
  4. }
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Debe ser para usar la librería donde se instalan los módulos por medio de esa herramienta.

La CUESTIÓN es... si esos módulos necesitaban algo extra que yo no tenía, porque esta aplicación debe ser auto-instalable, no puedo colocar a las personas a dar vueltas para instalarla... ¿QUÉ RAYOS PUDO HABER PASADO...?

Si yo quito el código anterior, de nuevo obtengo error 500.
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

Re: Internal Server Error, nuevo para mi

Notapor explorer » 2012-06-14 10:29 @478

A ver... no puede ser que en el log no indique nada... Si el mensaje de error dice que no encuentra un archivo, debería salir esa información en el error.log. Además, usando CGI::Carp, debería salir también en la pantalla del navegador. Eso sí: al usar CGI::Application (CA), las reglas de juego con los módulos CGI se rompen, así que CGI::Carp quizás está informando, pero algo de CA le impide salir.

El preámbulo que te han indicado lo he visto en varios sistemas de alojamiento. Y eso ya da más pistas a lo que sucede: el mensaje de error no es que el servidor web no pudiera encontrar a index.pl, sino que lo que no encontraba es a alguno de los módulos que el programa necesitaba.

El preámbulo, lo que hace, es modificar todas las rutas dentro de @INC para que el intérprete de Perl busque los módulos y bibliotecas en, y solo en, los directorios del usuario. Ninguna búsqueda en los directorios del sistema.

Todo esto está preparado para que la instalación de los módulos desde el panel de control ocurra precisamente en esos directorios. Así, no se mezclan ni interfieren los módulos de distintos usuarios en la misma máquina.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14476
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Re: Internal Server Error, nuevo para mi

Notapor danimera » 2012-06-14 10:44 @489

Ahora sí...

Claro, el log indicaba que no encontraba:
[Thu Jun 14 10:22:47 2012] [error] [client 190.99.227.167] File does not exist: /home/expola/public_html/404.shtml, referer: http://expolatinedutour.com/index.pl

Sí noté que la cuestión de CGI con CGI-App es algo diferente, entonces yo creo que lo mejor sería llamar los módulos fuera del CGI-App y con el CGI-Carp ver qué es lo que me está notificando, o para saber cuáles son los módulos que hacen falta.

Porque la aplicación debe tener todos los módulos necesarios para correr sin ningún problema.
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

Re: Internal Server Error, nuevo para mi

Notapor explorer » 2012-06-14 12:43 @572

Buscando en Google por CGI::Application y debug, me salen unos cuantos enlaces, con ejemplos y módulos.

Uno de ellos es el módulo CGI::Application::Plugin::DebugScreen, que a su vez llama a CGI::Carp::DebugScreen.
JF^D Perl programming & Raku programming. Grupo en Telegram: https://t.me/Perl_ES
Avatar de Usuario
explorer
Administrador
Administrador
 
Mensajes: 14476
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España

Siguiente

Volver a Web

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado