Apache en Windows me da el siguiente error cuando intento acceder a mi script de Perl:

Server error!

The server encountered an internal error and was unable to complete your request.

Error message: 
End of script output before headers: sample.pl

If you think this is a server error, please contact the webmaster.

Error 500

localhost
Apache/2.4.4 (Win32) OpenSSL/1.0.1e PHP/5.5.3

este es mi script de ejemplo

#!"C:\xampp\perl\bin\perl.exe"
print "Hello World";

pero no funciona en el navegador

Editar tu pregunta para incluir el contenido de la secuencia de comandos Perl de sí mismo. También, por favor, utilice el código de formato para hacer más fácil la lectura. Simplemente, seleccione el bloque que desea dar formato y haga clic en el {} en la parte superior de la caja de edición.
Leer su registro de errores para ver el error real. Ya que nos han mostrado ningún código, nadie va a ser capaz de ayudarle.
Hola chicos lo siento por mi mal inglés y pregunta y estoy novato en cgi y perl cuando ejecuto el script en perl que tengo un error 500 internal este es mi ejemplo de script #!»C:\xampp\perl\bin\perl.exe» imprimir «Hola Mundo»; pero no funciona en el navegador
Por favor, no publicar su código como un comentario, que es muy difícil de leer. En su lugar, editarlo en tu pregunta.
stackoverflow.com/questions/2165022/…

OriginalEl autor user3367242 | 2014-03-10

11 Comentarios

  1. 17

    De verificación de los permisos de archivo.

    Yo tenía exactamente el mismo error en una máquina Linux con el mal de los permisos establecidos.

    chmod 755 myfile.pl

    resuelto el problema.

    OriginalEl autor Renning

  2. 14

    Si este es un script CGI para la web, entonces usted debe salida de su encabezado:

    #!"C:\xampp\perl\bin\perl.exe"
    
    print "Content-Type: text/html\n\n";
    print "Hello World";

    El siguiente mensaje de error indica que este End of script output before headers: sample.pl

    O mejor aún, utilizar el CGI módulo de salida de la cabecera:

    #!"C:\xampp\perl\bin\perl.exe"
    
    use strict;
    use warnings;
    
    use CGI;
    
    print CGI::header();
    print "Hello World";
    Aún mejor, la impresión de un «Content-type: text/plain» de cabecera si usted está enviando texto sin formato en lugar de HTML 🙂

    OriginalEl autor Miller

  3. 6

    Para referencia futura:

    Esto es generalmente un error que se produce cuando usted no puede ver o ejecutar el archivo, la razón por la cual generalmente es un error de permisos. Me gustaría empezar por seguir a @Renning sugerencia y ejecución de chmod 755 test.cgi (obviamente reemplazar prueba.cgi con el nombre de tu script cgi aquí).

    Si eso no funciona, hay un par de otras cosas que usted puede intentar. Una vez me este error cuando he creado test.cgi como root en otro hogar del usuario. La revisión no fue correr chmod user:user test.cgi donde usuario es el nombre del usuario que la casa en la que estás.

    La última cosa que puedo pensar es asegurarse de que tu script cgi es devolver el correcto de los encabezados. En mi script en ruby que lo hice poniendo puts "Content-type: text/html" antes de que en realidad me aparece nada en la página.

    Feliz codificación!

    OriginalEl autor watzon

  4. 5

    Probablemente esta es una de SELinux bloque. Intente esto:

    # setsebool -P httpd_enable_cgi 1
    # chcon -R -t httpd_sys_script_exec_t cgi-bin/your_script.cgi

    OriginalEl autor kod

  5. 4

    Tenía el mismo error en la raspberry pi. Me fijo por la adición de -w para el shebang

    #!/usr/bin/perl -w
    Alguien de cuidado de explicar por qué? A mí me funciona, pero no tiene sentido, porque yo ya había puesto «el uso de advertencias;»

    OriginalEl autor Carter Brown

  6. 3

    Si el uso de Suexec, asegúrese de que el guión y su directorio son propiedad del mismo usuario que se especifica en suexec.

    Además, asegúrese de que el usuario que ejecuta el script cgi tiene permisos permisos de ejecución al archivo Y el programa especificado en el shebang.

    Por ejemplo, si mi script cgi se inicia con

    #! /usr/bin/cgirunner

    A continuación, el usuario tiene permisos para ejecutar /usr/bin/cgirunner.

    OriginalEl autor Despertar

  7. 2

    Así que para todas empiezan con XAMPP cgi

    cambiar la extensión de pl cgi

    cambiar los permisos a 755

    mv test.pl test.cgi
    chmod 755 test.cgi

    Se fija la mía.

    OriginalEl autor crustycollins

  8. 1

    Interna de error es debido a un personaje OCULTO al final del proceso de la línea !!
    es decir la línea #!/usr/bin/perl

    Mediante la adición de - o -w al final mueve el personaje, lejos de «perl», permitiendo que la ruta de acceso al perl del procesador para ser encontrado y de secuencia de comandos a ejecutar.

    OCULTO charactor es creado por el editor utilizado para crear la secuencia de comandos

    OriginalEl autor Tony Goertz

  9. 0

    Colocando por encima de las sugerencias de todos, yo estaba usando xampp para la ejecución de scripts cgi.
    Windows 8 se trabajó con los cambios, pero Cent7.0 lanzaba errores como este, como se dijo anteriormente

    AH01215: (2)No existe el fichero o directorio: exec de ‘/opt/lampp/cgi-bin/pbsa_config.cgi’ error: /opt/lampp/cgi-bin/pbsa_config.cgi, referer: http://<>/MCB_HTML/TestBed.html

    [Mié Ago 30 09:11:03.796584 2017] [cgi:error] [pid 32051] [client XX:60624] Final de salida de secuencia de comandos antes de encabezados: pbsa_config.cgi, referer: http://xx/MCB_HTML/TestBed.html

    Tratar:

    Selinux deshabilitado

    Dado todos los permisos para la secuencia de comandos, pero 755 va a estar bien

    Yo, finalmente, agregado como -w, como el de abajo

    #!/usr/bin/perl -w*
    
    use CGI ':standard';
    {
    
            print header(),
             ...
             end_html();
    
    
    }
    
    **-w** indictes enable all warnings.It started working, No idea why -w here.

    OriginalEl autor Bhagyaraj

  10. 0

    Ya que la respuesta no es aceptada, me gustaría dar una posible solución. Si el script está escrito en Windows y subido a un servidor Linux(a través de FTP), entonces el problema va a recaudar por lo general. La razón es que Windows utiliza CRLF al final de cada línea, mientras que Linux utiliza LF. Así que usted debe convertir de CRLF a LF con la ayuda de un editor de Átomo, como los siguientes

    OriginalEl autor Ian

  11. 0

    Usted puede obtener este error si la ejecución de CGI archivos de un directorio de inicio utilizando Apache mod_userdir y el usuario public_html directorio no es grupo-son propiedad del usuario primario de GID.

    He sido capaz de encontrar ninguna documentación sobre esto, pero esta fue la solución que me topé con algunos fallando los scripts CGI. Sé que suena realmente extraño (no tiene ningún sentido para mí tampoco), pero se hizo el trabajo para mí, así que espero que esto le sea útil a alguien así.

    OriginalEl autor jayhendren

Dejar respuesta

Please enter your comment!
Please enter your name here