• Publicidad

Un extraño error en el server por un módulo

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.

Un extraño error en el server por un módulo

Notapor danimera » 2008-06-25 07:26 @351

Hola estoy usando el módulo HTML::Calendar

y este es mi código, algo muy simple
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
#!/usr/bin/perl
use CGI qw(:all);
use HTML::Calendar::Simple;

print header;


  my $cal = HTML::Calendar::Simple->new; # This month, this year
     $cal = HTML::Calendar::Simple->new({ 'month' => 9,
                                          'year'  => 2008});

 
  $cal->pin_up("http://zephiroclub.net/varios/cinesu.gif");  
  $cal->daily_info({ 'day'      => 1,
                     'day_link' => "http://www.zephiroclub.net/WebAPP/images/uploads/NarutoShippuden51.jpg",
                     $type2     => $info2,
                     'link'     => [$link, "<img src='http://www.zephiroclub.net/WebAPP/images/topics/reviews.gif' align='absmiddle' alt='feoajja'>"],
  });
  $cal->daily_info({ 'day'      => 2,
                     'day_link' => "http://www.zephiroclub.net/WebAPP/images/uploads/NarutoShippuden51.jpg",
                     $type2     => $info2,
                     'link'     => [$link, "<img src='http://www.zephiroclub.net/WebAPP/images/topics/reviews.gif' align='absmiddle'>"],
  });
  $cal->daily_info({ 'day'      => 3,
                     'day_link' => "http://www.zephiroclub.net/WebAPP/images/uploads/NarutoShippuden51.jpg",
                     $type2     => $info2,
                     'link'     => [$link, "<img src='http://www.zephiroclub.net/WebAPP/images/topics/reviews.gif' align='absmiddle'>"],
  });

 

    my $html = $cal->calendar_month;
 
 print $html;
Coloreado en 0.003 segundos, usando GeSHi 1.0.8.4


Cuando lo ejecuto localmente en mi IIS en Windows, funciona normal...
Pero cuando lo subo a Internet a mi hosting obtengo un error 500 y miro el log y me dice nada más y nada menos que:

Código: Seleccionar todo
[Wed Jun 25 07:18:12 2008] [error] [client 200.29.127.95] File does not exist: /home/bitacor4/public_html/500.shtml
[Wed Jun 25 07:18:12 2008] [error] [client 200.29.127.95] Premature end of script headers: /home/bitacor4/public_html/lista.pl


Ahora, para poder instalar módulos en mi hosting hay una opción y me dice esto:

Ubicación de Su Perl Module(s)
Ruta: /home/bitacor4/perl

Usando Su Perl Module(s)
necesitará añadir /home/bitacor4/perl al path de exclusión.
Puede hacer esto añadiendo el siguiente código a su script:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
my $homedir = (getpwuid($>))[7];
my $n_inc = scalar @INC;
for (my $i = 0; $i < $n_inc; $i++ ) {
     if (-d $homedir . '/perl' . $INC[$i]) {
         unshift(@INC,$homedir . '/perl' . $INC[$i]);
         $n_inc++;
         $i++;
     }
}
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


No sé qué pueda estar pasando, ya que estoy acostumbrado al IIS donde todo me funciona bonito, en cambio, Linux, no me quiere :roll:
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

Notapor kidd » 2008-06-25 07:44 @364

Hola:

Tu script te está regresando un error interno, y la línea

Código: Seleccionar todo
[Wed Jun 25 07:18:12 2008] [error] [client 200.29.127.95] File does not exist: /home/bitacor4/public_html/500.shtml


simplemente te indica que no encontró el archivo 500.html que sería el template para mostrarte el error de servidor.

Deberías de checar algunas cosas:

* Verifica que la transferencia del archivos por FTP sea en ASCII y NO en binario.

* Verifica que tu script tenga permisos de ejecución. Normalmente 0755 ó 0775

Después de eso te recomiendo que agregues la línea:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
use CGI::Carp qw(fatalsToBrowser);
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


para que te muestre en el navegador cualquier error que puedas tener.


Saludos
Uriel Lizama Perl programmer fundador de Perl en Español
Perl Programming Language
Avatar de Usuario
kidd
Creador de Perl en Español
Creador de Perl en Español
 
Mensajes: 1166
Registrado: 2003-10-15 16:52 @744
Ubicación: México

Notapor danimera » 2008-06-25 08:55 @413

Gracias kidd, pues el problema sí está en el módulo. Ahora con el CGi::Carp tengo

Código: Seleccionar todo
Software error:
Can't locate HTML/Calendar/Simple.pm in @INC (@INC contains: /usr/lib/perl5/5.8.8/i686-linux /usr/lib/perl5/5.8.8 /usr/lib/perl5/site_perl/5.8.8/i686-linux /usr/lib/perl5/site_perl/5.8.8 /usr/lib/perl5/site_perl/5.8.5 /usr/lib/perl5/site_perl/5.8.4 /usr/lib/perl5/site_perl/5.8.3 /usr/lib/perl5/site_perl/5.8.2 /usr/lib/perl5/site_perl/5.8.1 /usr/lib/perl5/site_perl/5.8.0 /usr/lib/perl5/site_perl .) at lista.pl line 4.
BEGIN failed--compilation aborted at lista.pl line 4.


Se supone que lo instalé en el hosting con una opción que trae. Imagino que tengo que usar el código que puse anteriormente para poder usar el módulo...
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

Notapor kidd » 2008-06-25 09:25 @434

No creo que sea necesario poner todo el código que te pusieron, si el módulo lo instalaste en:
/home/bitacor4/perl

Bastaría con agregar la ruta en la ruta de búsqueda de módulos de Perl. Para ello pon la siguiente línea antes de la carga del módulo:

Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
use lib('/home/bitacor4/perl');
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4
Uriel Lizama Perl programmer fundador de Perl en Español
Perl Programming Language
Avatar de Usuario
kidd
Creador de Perl en Español
Creador de Perl en Español
 
Mensajes: 1166
Registrado: 2003-10-15 16:52 @744
Ubicación: México

Notapor danimera » 2008-06-25 10:01 @459

Gracias pero aun me sigue saliendo este error:

Código: Seleccionar todo
Software error:
Can't locate HTML/Calendar/Simple.pm in @INC (@INC contains: /home/bitacor4/perl /usr/lib/perl5/5.8.8/i686-linux /usr/lib/perl5/5.8.8 /usr/lib/perl5/site_perl/5.8.8/i686-linux /usr/lib/perl5/site_perl/5.8.8 /usr/lib/perl5/site_perl/5.8.5 /usr/lib/perl5/site_perl/5.8.4 /usr/lib/perl5/site_perl/5.8.3 /usr/lib/perl5/site_perl/5.8.2 /usr/lib/perl5/site_perl/5.8.1 /usr/lib/perl5/site_perl/5.8.0 /usr/lib/perl5/site_perl .) at lista.pl line 5.
BEGIN failed--compilation aborted at lista.pl line 5.

y eso que la aplicación del hosting me dice que ya está instalado.

http://www.bitacora.biz/hostg.jpg
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

Notapor explorer » 2008-06-25 10:25 @476

Debes hacer lo que te dicen: agregar el trozo de código que te ponen al principio de tu programa. Quizás exista alguna diferencia en usar use lib a calcular antes el valor del $homedir (quizás, también, /home/bitacor4 no sea tu $homedir).

Una cosilla, las líneas
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
  my $cal = HTML::Calendar::Simple->new; # This month, this year
     $cal = HTML::Calendar::Simple->new({ 'month' => 9,
                                          'year'  => 2008 });
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4

es mejor dejarlas así:
Sintáxis: [ Descargar ] [ Ocultar ]
Using perl Syntax Highlighting
my $cal = HTML::Calendar::Simple->new({ 'month' => 9, 'year'  => 2008 });
Coloreado en 0.001 segundos, usando GeSHi 1.0.8.4


Lo que sí puedes es hacerlo por partes: primero pones un programa para saber cómo va a modificar @INC el trozo de su script. Una vez que sepas qué valor ha metido, ya sabes qué es lo que tienes que poner en tu use lib.
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 danimera » 2008-06-26 08:33 @398

home/bitacor4 es mi $homedir
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

Notapor explorer » 2008-06-26 16:28 @727

Haz un cgi cuya misión sea hacer un listado del contenido del directorio /home/bitacor4/perl, para ver lo que hay dentro.

Esos módulos deben estar en algún sitio.

He revisado el código que modifica el @INC... y veo cosas muy raras... Yo creo que no hace nada...

Se tienen que dar las siguientes circunstancias:

* Debe existir un subdirectorio /perl dentro del directorio personal
* Entre alguno de los directorios de @INC, se debe dar la casualidad de que la misma estructura de ese directorio se debe repetir dentro de ese directorio /perl

Así, si @INC contiene, por ejemplo,
Código: Seleccionar todo
  @INC:
    /usr/lib/perl5/5.8.8/i586-linux-thread-multi
    /usr/lib/perl5/5.8.8
    /usr/lib/perl5/site_perl/5.8.8/i586-linux-thread-multi
    /usr/lib/perl5/site_perl/5.8.8
    /usr/lib/perl5/site_perl
    /usr/lib/perl5/vendor_perl/5.8.8/i586-linux-thread-multi
    /usr/lib/perl5/vendor_perl/5.8.8
    /usr/lib/perl5/vendor_perl
    .

eso quiere decir que alguno de estos directorios, su estructura, se debe repetir dentro de ese directorio /perl.
* Si existe toda esa combinación, se agrega ese directorio a @INC.

Un ejemplo: si en tu cuenta de usuario existe TODO este directorio: /home/bitacor4/perl/usr/lib/perl5/site_perl Y /usr/lib/perl5/site_perl es uno de los directorios que están en @INC, entonces ese directorio se añade a @INC.

Debes averiguar qué es lo que hay en tu carpeta /perl. Vale con ver los directorios que existen dentro de él.

Podríamos usar el siguiente comando de find:
Sintáxis: [ Descargar ] [ Ocultar ]
Using bash Syntax Highlighting
find /home/bitacor4/perl -type d
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
pero claro, en un hosting no suele ser habitual que nos dejen hacer eso.

Con la ayuda del comando find2perl podemos transformar el comando anterior en un programa Perl que sí podemos ejecutar allí:
Sintáxis: [ Descargar ] [ Ocultar ]
Using bash Syntax Highlighting
explorer@portatil:~/Documents/Desarrollo/perl510> find2perl /home/bitacor4/perl -type d
#! /usr/bin/perl -w
    eval 'exec /usr/bin/perl -S $0 ${1+"$@"}'
        if 0; #$running_under_some_shell

use strict;
use File::Find ();

# Set the variable $File::Find::dont_use_nlink if you're using AFS,
# since AFS cheats.

# for the convenience of &wanted calls, including -eval statements:
use vars qw/*name *dir *prune/;
*name   = *File::Find::name;
*dir    = *File::Find::dir;
*prune  = *File::Find::prune;

sub wanted;



# Traverse desired filesystems
File::Find::find({wanted => \&wanted}, '/home/bitacor4/perl');
exit;


sub wanted {
    my ($dev,$ino,$mode,$nlink,$uid,$gid);

    (($dev,$ino,$mode,$nlink,$uid,$gid) = lstat($_)) &&
    -d _
    && print("$name\n");
}
Coloreado en 0.002 segundos, usando GeSHi 1.0.8.4
Lo subimos al servidor y lo ejecutamos. El resultado lo podríamos ver como CGI o llevarlo a un fichero y luego descargarlo.

O también... quizás en ese hospedaje dispongas de alguna herramienta web o acceso por FTP que te permita ver tus subdirectorios.
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 danimera » 2008-06-26 21:39 @944

Resulta que revisé mi directorio donde debían estar los módulos que yo instalo y a que no adivinas que... Sí existe el directorio /perl dentro de /home/bitacor4/

Pero no existe /home/bitacor4/perl/usr/lib/perl5/site_perl Y /usr/lib/perl5/site_perl por tanto no está en @INC.

Al final me dijeron los de soporte que no dejaban instalar módulos que no fueran estándar y pues ahora será utilizarlo manualmente.
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

Notapor explorer » 2008-06-27 07:46 @365

Pues nada... cambia de alojamiento... O rómpete la cabeza para instalar tus módulos en el directorio /perl.

Me gustaría saber qué entienden ellos por 'módulos estándar'.
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

Siguiente

Volver a Módulos

¿Quién está conectado?

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