Solucionar error de child process al ejecutar scripts CGI con código Perl desde Apache

Es posible que cuando intentemos acceder mediante un navegador a un script CGI con código Perl servido por Apache, obtengamos un Internal Server Error (500) y al ver el log de errores correspondiente veamos las siguientes líneas:

[Mon Sep 01 19:26:36 2014] [error] [client 127.0.0.1] (OS 2)El sistema no puede encontrar el archivo especificado.  : couldn't create child process: 720002: script.cgi, referer: http://localhost
[Mon Sep 01 19:26:36 2014] [error] [client 127.0.0.1] (OS 2)El sistema no puede encontrar el archivo especificado.  : couldn't spawn child process: C:/www/script.cgi, referer: http://localhost

En inglés el mensaje es parecido:

[Mon Sep 01 19:26:36 2014] [error] [client 127.0.0.1] (OS 2)The system cannot find the file specified.  : couldn't create child process: 720002: script.cgi, referer: http://localhost
[Mon Sep 01 19:26:36 2014] [error] [client 127.0.0.1] (OS 2)The system cannot find the file specified.  : couldn't spawn child process: C:/www/script.cgi, referer: http://localhost

Para solucionarlo simplemente debemos:

  1. Abrir el script.cgi con un editor de textos
  2. Ver la ruta hacia perl en la primer línea (shebang)
  3. Verificar que el ejecutable de perl esté en esa ruta

Si no hay coincidencia, tenemos 2 alternativas:

  1. Copiar el ejecutable de perl a la ruta donde lo busca el script
    • Lo recomiendo cuando son muchos los scripts que apuntan a esa ruta en el shebang o cuando es la ruta más común “usr/bin/perl
  2. Cambiar la ruta en el script para que apunte al directorio donde está instalado perl
    • Lo recomiendo cuando sea un único script o cuando tenemos perl en el directorio más común “usr/bin
Tagged with: , , ,
Publicado en Aplicaciones