Perl en Español

  1. Home
  2. Tutoriales
  3. Foro
  4. Artículos
  5. Donativos
  6. Publicidad
 
Índice general » Mundo Perl » Web » Problema con Apache - LAMPP al ejecutar cgi Responder al tema
Nuevo tema


Página 1 de 1  [ 2 mensajes ] 
 
Nota 2009-05-26 12:26 @560

Perlero Nuevo
Registrado: 2009-05-26 12:13 @550
Mensajes: 1
Problema con Apache - LAMPP al ejecutar cgi
Hola. Primero que nada un agradecimiento al foro que me ha ayudado mucho en mis trabajos y desarrollos.
GRACIAS.

Estoy desarrollando un control en la PC para el puerto paralelo. Utilizando Perl voy a sacar datos por el puerto paralelo. Estoy usando los siguientes módulos:

Time::HiRes para temporizadores,
ParallelPort:: utilizando el driver ::ParallelPort::drv::linux para Linux.

Este proyecto lo desarrollé utilizando Windows Apache + Perl. Ahora lo quiero utilizar en Ubuntu Server. Al correr el script para sacar todos los datos me manda el error 500.

Revisé el log y aparece esto:
Código:
[Tue May 26 12:21:07 2009] [error] [client 127.0.0.1] (2)No existe el fichero \xc3\xb3 directorio: exec of '/opt/lampp/cgi-bin/conectatodo.cgi' failed

[Tue May 26 12:21:07 2009] [error] [client 127.0.0.1] Premature end of script headers: conectatodo.cgi


El \xc3\xb3 es por que principia un carácter UTF8, ¿no?

El código es el siguiente: conectatodo.cgi
Syntax: [ Download ] [ Hide ]
Using perl Syntax Highlighting
#!/bin/perl -w
        print "content-type: text/html\n\n";

        use integer;
        use CGI ':standard';   
        use Device::ParallelPort;
        use Device::ParallelPort::drv::linux;      

        my $port = Device::ParallelPort->new( );  


#Llamada a librería de subrutinas

        require 'entorno2.lib';


#LLama a la subrutina "registro" para enviar el dato al octeto.

        registro(0,255);
        registro(2,15);

exit(1);


La librería entorno2 es la siguiente:

Syntax: [ Download ] [ Hide ]
Using perl Syntax Highlighting
use Time::HiRes qw( usleep );
use Device::ParallelPort;
use Device::ParallelPort::drv::linux;

my $port = Device::ParallelPort->new();
my $dato1;

#Zona de subrutinas    

#Subrutinas para salidas

#$_[0],$_[1],$_[2], etc.. son los argumentos para pasar parámetros a las Subrutinas

sub registro {
        $port->set_byte ($_[0], chr($_[1]));
}              

sub conecta {  
        $port->set_bit($_[0],1);   # $_[0] es el argumento de entrada para la subritina. En este caso es el número de bit de la salida de la contorladora.

         print "<p>Salida <b>$_[0] On</b>\n";
}

sub apaga {    
        $port->set_bit($_[0],0);

        print "<p>Salida <b>$_[0] Off</b>\n";

}              

sub apagatodo {
        $port->set_byte (0, chr(0));

        $port->set_byte (2, chr(0));
}      

sub enciendetodo {     
        $port->set_byte (0, chr(255));
}      

#Si se pulsa la entrada1, escribe Off en el archivo
sub in1_0ff{
        if ($entrada1==0) {
                $dato1=Off;
                open (BANDERA1, ">bandera1.txt");
                print BANDERA1 $dato1;
                close BANDERA1;
        }
}              

#Si se pulsa la entrada2, escribe Off en el archivo            
sub in2_0ff{
        if ($entrada2==0) {
                $dato2=Off;
                open (BANDERA2, ">bandera2.txt");
                print BANDERA2 $dato2;
                close BANDERA2;
        }
}      

#Si se pulsa la entrada2, escribe Off en el archivo
sub in3_0ff{
        if ($entrada2==0){
                $dato3=Off;
                open (BANDERA3, ">bandera3.txt");
                print BANDERA3 $dato3;
                close BANDERA3;
        }
}      

#Subrutina para entradas
sub entradas {
        $entrada1=$port->get_bit(11); #Carga el valor de la primera entrada en la variable
        $entrada2=$port->get_bit(12); #Carga el valor de la segunda entrada en la variable
        $entrada3=$port->get_bit(13);
        $entrada4=$port->get_bit(14);
        $entrada5=$port->get_bit(15);
}

1;


De antemano, gracias, y espero puedan ayudarme, porque no doy nada más con el error.
:D Saludos desde Mexico , San Luis Potosi


Nota 2009-05-26 15:00 @667
Avatar de Usuario
Administrador
Registrado: 2005-07-24 18:12 @800
Ubicación: Valladolid, España
Mensajes: 10270
Bienvenido a los foros de Perl en Español, pianistman2006.

Los caracteres "\xc3\xb3" corresponden, en utf8, al carácter 'ó'. Pero no lo veo en tu programa.

Asegúrate de que la primera línea del programa es la del shebang y solo eso. Para asegurarte, borra toda la línea, inserta una nueva, con el contenido
Syntax: [ Download ] [ Hide ]
Using perl Syntax Highlighting
#/usr/bin/perl -w
que además, fíjate que he pongo que el intérprete perl está dentro de /usr/bin, no dentro de /bin, como pones tu. Comprueba en tu sistema dónde tienes el intérprete. Si es Ubuntu, lo más seguro es que esté en /usr/bin. Con el comando which perl también lo puedes averiguar.

Un detalle sobre CGI: no necesitas ejecutar el print de la cabecera "a mano". Ya que estás usando el módulo CGI, lo puedes dejar así:
Syntax: [ Download ] [ Hide ]
Using perl Syntax Highlighting
#!/usr/bin/perl -w
use CGI ':standard';
use Device::ParallelPort;
use Device::ParallelPort::drv::linux;
use integer;

my $port = Device::ParallelPort->new( );

require 'entorno2.lib';

print header();   # Cabecera HTTP de respuesta

registro(0,255);
registro(2,15);

exit 1;
Sustituimos el print "Content-Type..." por print header(); También he cambiado la posición de 'integer', porque podría afectar a la carga de los 'use' que le siguen. Por eso lo pongo al final.

Te aconsejo el use del módulo CGI::Carp, como puedes ver en mi CGI mínimo, ya que te mostrará los errores en la página del navegador.

_________________
JF^D Perl programming


Responder al tema  [ 2 mensajes ] 

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

Publicidad

Socializa

Síguenos por Twitter

Suscríbete GRATUITAMENTE al Boletín de Perl en Español

Saltar a:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Traducción al español por Huan Manwë para phpbb-es.com
phpBB SEO