• Publicidad

500 Internal Server Error. ¿Módulo no instalado?

Aquí encontrarás todo lo que sea específicamente acerca de módulos de Perl. Ya sea que estás compartiendo tu módulo, un manual o simplemente tienes una duda acerca de alguno.

500 Internal Server Error. ¿Módulo no instalado?

Notapor apardo » 2009-05-05 07:04 @336

Hola a todos,

tengo un cgi que al ser ejecutado desde un formulario me devuelve error. En local (Win XP) me funciona correctamente.
Al darme error pensé que puede ser porque el servidor no tiene instalados unos módulos.

He creado un directorio lib/ en el servidor y he subido los .pm de mi directorio C:/perl/site/lib/Geo, pero me sigue dando error.

¿Hay que hacer algo más aparte de subirlos al servidor?

Gracias anticipadas / saludos / apardo

Muestro el código:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl -w

use strict;
use lib '/home/www/miproveedordeinternet.net/lib';

use Geo::Distance;
use Geo::Forward;
use Getopt::Long;

my $gf  = Geo::Forward->new();
my $geo = new Geo::Distance;

&Lee_Form;
&Bucle_Coordenadas;

exit (0);
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
apardo
Perlero nuevo
Perlero nuevo
 
Mensajes: 17
Registrado: 2009-03-31 16:58 @748

Publicidad

Notapor explorer » 2009-05-05 07:14 @343

Pero, ¿qué error sale?

Copiar los módulos es una cosa, pero si los módulos no están escritos en "puro" Perl, entonces la instalación no es así de sencilla.
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 monoswim » 2009-05-05 07:16 @344

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl -w

use strict;
use lib '/home/www/miproveedordeinternet.net/lib';
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


¿ Eso te funciona en win XP ? Seguramente cambiando la dirección del lib/...

Al subirlo, ¿ la dirección /usr/bin/perl es correcta ? ¿ Y le das permisos chmod 755 al script ?

:adios:
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 apardo » 2009-05-05 11:17 @512

Hola, explorer y monoswim,

Gracias por responder tan rápido.

monoswim: en XP me funciona cambiando la 1ª línea por #!C:\perl\bin\perl.exe -w y quitando la línea use lib...

Permisos y /usr/bin/perl revisados y correctos (ya tengo otros script funcionando).

Con el perl package manager me instalé los módulos Geo:: en mi XP. Cuando ya tenía el script a mi gusto y funcionando, cambié la 1ª línea por #!/usr/bin/perl -w

y subí el script al hosting. Al ejecutar me da un error. La faq del servidor dice que el 500 Internal server error puede ser porque algún módulo usado en el script no está cargado en el servidor.

Busqué info en este foro (ya no busco fuera) y encontré este tutorial:

http://perlenespanol.com/tutoriales/modulos/usar_modulos_sin_instalar.html

He creado un directorio lib/ en el hosting y he subido los .pm que creo que no están instalados. He incluido la línea
use lib 'caminocompleto/lib'
en mi script, y me sigue dando el mismo error.

explorer: los módulos son los instalados con el PPM
Código: Seleccionar todo
Geo-Distance
Calculate Distances and Closest Locations
   Version:   0.11
   Released:   2005-09-01
   Author:   Aran Clary Deltac <[email protected]>
   CPAN:   http://search.cpan.org/dist/Geo-Distance-0.11/

Installed files:
   C:/Perl/html/site/lib/Geo/Distance.html
   C:/Perl/site/lib/Geo/Distance.pm
   C:/Perl/site/lib/auto/Geo/Distance/.packlist

He subido
Código: Seleccionar todo
    C:/Perl/site/lib/Geo/Distance.pm  al servidor. ¿vale así?


Gracias anticipadas / saludos / apardo
apardo
Perlero nuevo
Perlero nuevo
 
Mensajes: 17
Registrado: 2009-03-31 16:58 @748

Notapor explorer » 2009-05-05 12:15 @552

A ver... no me pega meter módulos para Windows en un servidor UNIX...
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 apardo » 2009-05-05 13:43 @613

Hola de nuevo,

Me parece que no me he sabido explicar...

Quiero hacer uso de este package: http://search.cpan.org/dist/Geo-Distance-0.11/
y de este: http://search.cpan.org/dist/Geo-Forward-0.11/
De estos package, utilizo esto:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
use Geo::Distance;
use Geo::Forward;
my $gf  = Geo::Forward->new();
my $geo = new Geo::Distance;
...
 ( $lat_inf, $lon_dcha ) = $gf->forward( $lat_sup, $lon_izda, 90.0,  $este_km * 1000 );
 ( $lat_inf, $lon_dcha ) = $gf->forward( $lat_inf, $lon_dcha, 180.0, $sur_km * 1000 );

 $dist_este = $geo->distance( 'meter', $lon_izda, $lat_sup, $lon_izda, $lat_inf );

 $dist_sur = $geo->distance( 'meter', $lon_izda, $lat_sup, $lon_dcha, $lat_sup );
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Como en casa uso XP, con el perl package manager los he instalado en mi PC; he hecho el script, lo he probado y funciona.

Ahora lo subo al hosting, lo ejecuto y me da el error 500 internal server.
Mi duda viene porque estoy suponiendo que el servidor no tiene instalados esos packages Geo::Distance y Geo::Forward.

El tutorial del foro indica que si el servidor no tiene los módulos instalados, cree un directorio, meta en él los módulos e incluya una línea, apuntando al camino absoluto donde he dejado los módulos; en mi caso, he creado el directorio lib, he copiado los pm y he incluido esta línea en el script:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
use lib '/home/www/miquegordis.100webspace.net/lib';
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


He comprobado que el pm que descarga el PPM de Windows es idéntico al que he descargado directamente desde http://search.cpan.org/dist/Geo-Forward-0.11/

Hago la pregunta de otra forma:
¿Hay manera de saber qué módulos tiene instalados el servidor hosting?

Gracias anticipadas / saludos / apardo
apardo
Perlero nuevo
Perlero nuevo
 
Mensajes: 17
Registrado: 2009-03-31 16:58 @748

Notapor explorer » 2009-05-05 14:50 @660

Disculpas, también, porque no me expresé bien. Quería decir que algunos módulos para Windows traen partes compiladas para esa arquitectura, por lo que no funcionarán en otra.

¿No tienes acceso a los registros de actividad del servidor web? Deberías intentar ver el contenido del fichero error.log para saber qué significa ese error 500.

Prueba a instalar mi CGI mínimo. Comprueba que funciona. Con la ayuda del módulo CGI::Carp verás los errores en el propio navegador. y además, viene de base con Perl, así que no tendrás que instalarlo. Cuando te funcione, prueba a poner los 'use' y ver si fallan y qué error te dan.

Como parece que estás en un sistema UNIX, comprueba que las carpetas donde has dejado el cgi como la de lib/, dejan pasar al usuario que ejecuta el servidor web. Con permisos 755 para carpetas y programas debería ser suficiente.
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 apardo » 2009-05-06 04:03 @210

Hola, explorer, de nuevo tus indicaciones me han ayudado.

Bueno, un par de cosas:
1º- El CGI mínimo me da error al ejecutarlo. Aunque ya tengo otros scripts funcionando en el hosting, lo he creado y ejecutado para ver cómo funcionaba CGI::Carp.

He comprobado el camino del perl con los scripts que me funcionan y he visto que la única diferencia es que
Código: Seleccionar todo
#!/usr/bin/perl     NO funciona
#!/usr/bin/perl -w  SI funciona


2º- He incluido el CGI::Carp en mi script y me confirma lo que sospechaba:

Código: Seleccionar todo
Software error:

Can't locate Geo/Distance.pm in @INC (@INC contains: /home/www/miquegordis.100webspace.net/lib /etc/perl /usr/local/lib/perl/5.8.4 /usr/local/share/perl/5.8.4 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.8 /usr/share/perl/5.8 /usr/local/lib/site_perl /usr/local/lib/perl/5.8.3 /usr/local/share/perl/5.8.3 /usr/local/lib/perl/5.8.2 /usr/local/share/perl/5.8.2 /usr/local/lib/perl/5.8.1 /usr/local/share/perl/5.8.1 /usr/local/lib/perl/5.8.0 /usr/local/share/perl/5.8.0 .) at /home/www/miquegordis.100webspace.net/cgi-bin/nuevo_kml_csupizda.cgi line 11.
BEGIN failed--compilation aborted at /home/www/miquegordis.100webspace.net/cgi-bin/nuevo_kml_csupizda.cgi line 11.
For help, please send mail to the webmaster ([email protected]), giving this error message and the time and date of the error.


Después de volverme loco cambiando el path del directorio lib/ con todas las combinaciones posibles, tanto path absoluto como relativo, el problema estaba en que:
NO vale colgar los módulos .pm a lo bruto en el directorio lib/ como hice, hay que colocarlos dentro de lib/ en el directorio correspondiente, esto es:
Código: Seleccionar todo
lib/Geo/*.pm
lib/XX/*.pm


¡¡Ya lo tengo funcionando!!
Muchas gracias / saludos / apardo

PD: eso del Carp ¡¡es la caña!! ¿por qué no lo conocería antes...?
apardo
Perlero nuevo
Perlero nuevo
 
Mensajes: 17
Registrado: 2009-03-31 16:58 @748

Notapor explorer » 2009-05-06 06:59 @333

Con respecto al primer problema, quizás sea porque la línea contenga algún carácter de fin de línea que no le guste al UNIX en donde lo estás ejecutando.

Borra la línea, completamente, escríbela de nuevo, y asegúrate que lo guardas con finales de línea estilo UNIX/Linux (solo un carácter de avance de línea).

Con respecto al segundo problema, pues eso de guardar los módulos de forma jerárquica, sí que es una forma peculiar de guardar los módulos en Perl, pero es algo de lo que te das cuenta viendo el árbol de módulos que toda distribución Perl instala. O en alguna parte recóndita de la documentación, como en perldoc perlmod (sí, ya sé que es espesa. Para eso estamos los monjes del Perl, para facilitar las cosas).
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 Jenda » 2009-05-08 16:32 @730

Si los .pm estaban en C:/perl/site/lib/Geo, deberías ponerlos en .../lib/Geo.

Pero especialmente si hay otro OS debes instalar los módulos correctamente, ¡no copiarlos manualmente!
-------------------------------------------------------
- Estoy aquí para practicar español. Si te ayudó mi respuesta ayudame con un mensaje privado sobre mis faltas por favor. Seguramente habrá muchas :-)
Jenda
Perlero nuevo
Perlero nuevo
 
Mensajes: 132
Registrado: 2007-10-29 06:31 @313
Ubicación: Praga, Republica Checa


Volver a Módulos

¿Quién está conectado?

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