Mar Jun 19, 2007 12:45 pm
|
 |
alagua
Perlero Nuevo

|
Registrado: 19 Jun 2007
Mensajes: 5
|
|
| Muy urgente: Perl con PHP |
|
|
Atención necesitamos ayuda urgente ya que nos es imprescindible tener esto funcionando para mañana, os expongo la cuestión:
Tenemos un script Perl (.pl), que queremos ejecutar desde un cliente en PHP.
En lugar de ejecutarse aparece un cuadro de descarga para descargar el archivo en cuestión.
Lo tenemos ubicado en la carpeta /usr/lib/cgi-bin/, y los permisos de ejecución para todos los usuarios están correctamente asignados.
Por favor es muy urgente solventar este problema, por ultimo decir que usamos apache2.
Gracias de antemano  |
|
|
|
Mar Jun 19, 2007 2:28 pm
|
 |
monoswim
Vive para Perl en Español

|
Registrado: 18 Nov 2003
Mensajes: 716
Ubicación: Buenos Aires
|
|
|
|
|
Checa que la primera línea tenga la dirección del intérprete de Perl y que el Apache esté configurado para ejecutar los .pl
Saludos |
|
Mar Jun 19, 2007 2:47 pm
|
 |
alagua
Perlero Nuevo

|
Registrado: 19 Jun 2007
Mensajes: 5
|
|
|
|
|
| Muchas gracias por tu ayuda. ¿Alguno de los lectores podría poner o redactar cómo configurar Apache2 para que ejecute archivos.pl? Gracias de antemano ^^ |
|
Mar Jun 19, 2007 3:52 pm
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4086
Ubicación: Valladolid, España
|
|
|
|
Mar Jun 19, 2007 4:13 pm
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4086
Ubicación: Valladolid, España
|
|
|
|
|
No necesitas configurar el Apache para nada.
Cuando se ejecuta el PHP, lo está haciendo en el Apache, como un proceso más, por lo que puedes ejecutar (en teoría) otros procesos de la máquina, entre ellos, hacer un system() (como se muestra en el hilo que te indiqué) y esperar el valor de vuelta.
El único problema es si no tienes permiso de ejecución de programas externos al script PHP. Entonces sí que deberás configurar el Perl como si fuera un CGI y hacer una petición al servidor web como si fuera una petición externa. |
|

Mar Jun 19, 2007 6:16 pm
|
 |
alagua
Perlero Nuevo

|
Registrado: 19 Jun 2007
Mensajes: 5
|
|
|
|
|
A ver, este es el código de llamada al script
| HTML: | //header("Location: /cgi-bin/actualiza.pl");
echo " <META HTTP-EQUIV='refresh' CONTENT='2;URL=/cgi-bin/actualiza.pl'>"; |
El problema es que el código no es mío, estamos trabajando sobre código de otras personas y me cuesta muchísimo ver los posibles errores. Si alguien me dice si ve algo raro por favor que me lo diga...
Aquí les adjunto el script que estamos utilizando, actualiza.pl, que a su vez hace una llamada a otro script, actualiza2.pl. Como os decía la llamada hace que aparezca como descarga de archivo ¡y lo que yo quiero es ejecutar el script!
Otra vez... gracias de antemano a todos.
| Perl: | #!/usr/bin/perl
print "Content-type: text/html\n\n";
print "<html><body bgcolor=”#FFFFCC”>\n";
`./actualiza2.pl` || die(“ERROR” );
print "<center><br><br><font color='green'>EL FIREWALL SE HA ACTUALIZADO
</font></center>\n";
print "<META HTTP-EQUIV='refresh' CONTENT='2; URL = http://192.168.1.24/vaciocentral.php'>\n";
print "</body></html>"; |
|
|

Mar Jun 19, 2007 6:31 pm
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4086
Ubicación: Valladolid, España
|
|
|
|
|
Bien, el script no tiene problemas, salvo quizás que está haciendo referencia a actualiza2.pl de forma relativa y eso puede provocar después que no lo encuentre.
Pero vuestro problema es que no ejecuta actualiza.pl. Es un CGI y como tal hay que ejecutarlo.
Debéis configurar Apache2 para que los pueda ejecutar. Editad la configuración del servidor y buscar la sección relativa a los CGI. Si está comentada, descomentarla. Fijaros también en: qué parte de disco duro hay que instalar los cgi y bajo qué directorio virtual hay que invocarlos.
Por ejemplo, en mi servidor los scripts cgi se colocan en el directorio /usr/lib/cgi/ y se invocan de la forma: http://www.midominio.com/cgi-bin/script.pl
Hay que mirar también la extensión del archivo que tenga definida para ese directorio. En casi todos los casos se podrá poner como .pl y/o .cgi. |
|

Mar Jun 19, 2007 6:45 pm
|
 |
alagua
Perlero Nuevo

|
Registrado: 19 Jun 2007
Mensajes: 5
|
|
|
|
|
¿Serías tan amable de copiarme aquí las secciones de tu fichero de configuración que hacen referencia a los cgi? (supongo que será el apache2.conf). Mira yo te pongo el mío a ver que le observas, perdona por la sobredosis de preguntas pero créeme es que es muy urgente:
Esto es de apache2.conf
| Código: |
# To use CGI scripts outside of ScriptAliased directories:
# (You will also need to add "ExecCGI" to the "Options" directive.)
#
AddHandler cgi-script .cgi
y esto de default en site-avaiables:
NameVirtualHost *
<VirtualHost *>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/
<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>
<Directory /var/www/>
Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
# This directive allows us to have apache2's default start page
# in /apache2-default/, but still have / go to the right place
RedirectMatch ^/$ /apache2-default/
</Directory>
ScriptAlias /cgi-bin/ "/usr/lib/cgi-bin/"
#ScriptAlias /cgi-bin/ /usr/local//
<Directory "/usr/lib/cig-bin/">
AllowOverride None
#Options ExecCGI -MultiViews +SymLinksIfOwnerMatch
Options +ExecCGI
Order allow,deny
Allow from all
</Directory>
ErrorLog /var/log/apache2/error.log
# Possible values include: debug, info, notice, warn, error, crit,
# alert, emerg.
LogLevel warn
CustomLog /var/log/apache2/access.log combined
ServerSignature On
Alias /doc/ "/usr/share/doc/"
<Directory "/usr/share/doc/">
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
Allow from 127.0.0.0/255.0.0.0 ::1/128
</Directory>
</VirtualHost> |
|
|

Mar Jun 19, 2007 7:30 pm
|
 |
explorer
Moderador

|
Registrado: 24 Jul 2005
Mensajes: 4086
Ubicación: Valladolid, España
|
|
|
|
|
Lo interesante de CGI está a partir de la línea ScriptAlias.
ScriptAlias /cgi-bin/ "/usr/lib/cgi-bin/" indica el directorio donde debes colocar tus scripts.
Y luego veo que hay un error. Pone
<Directory "/usr/lib/cig-bin/">
cuando debería ser
<Directory "/usr/lib/cgi-bin/">
(hay un par de letras cambiadas).
El resto lo veo bien. Es casi idéntico al mío.
Veréis más pistas mirando los ficheros de log (/var/log/apache2/access.log /var/log/apache2/error.log) |
|
Mar Jun 19, 2007 8:41 pm
|
 |
alagua
Perlero Nuevo

|
Registrado: 19 Jun 2007
Mensajes: 5
|
|
|
|
|
| muchas gracias por todo, de verdad, ya parece que esto funciona, menos mal xD en cuatro horas tengo que entregarlo ^^ |
|
Powered by phpBB © 2001, 2005 phpBB Group
|