Ver Mensaje Individual
  #12 (permalink)  
Antiguo 26/10/2009, 18:32
Avatar de HackmanC
HackmanC
 
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 3 meses
Puntos: 260
Sonrisa Respuesta: Pequeño problema con exec()

Hola,

¿Quien hizo el makefile? ¿Que contiene adentro el makefile?
Creo que el único que te puede resolver esta situación es el que hizo el makefile.


Dentro de mi directorio de usuario en Linux Debian, hice un directorio llamado apps y dentro de ese sub-directorio otro llamado hello. Para que TODO el mundo pueda escribir en ese directorio (hello) le cambié permisos a 777.

Dentro del directorio hello hice un makefile que simplemente crea un archivo con un texto adentro. Para que TODO el mundo pueda leer el makefile le cambié los permisos a 666. El objetivo es mostrar la ubicación donde quedaría el archivo temporal hello.txt y verificar los permisos:

makefile
Código:
hello:
        echo 'Hello World!' > hello.txt
Dentro del sitio web, en Apache, hice un nuevo archivo PHP, para ejecutar el makefile anterior.

Código PHP:
Ver original
  1. <html>
  2. <head><title>Hello World!</title></head>
  3. <body>
  4. <?php
  5. $app = 'hello';
  6. echo exec ("make -C /home/hackmanc/apps/$app/ hello");
  7. ?>
  8. </body>
  9. </html>

Y al ejecutarlo me crea el archivo hello.txt en la carpeta correspondiente.

Código:
hackman@debian:~/apps/hello$ ls -lah
total 16K
drwxrwxrwx 2 hackman  hackman  4.0K 2009-10-26 17:58 .
drwxr-xr-x 3 hackman  hackman  4.0K 2009-10-26 17:56 ..
-rw-r--r-- 1 www-data www-data   13 2009-10-26 17:58 hello.txt
-rw-rw-rw- 1 hackman  hackman    42 2009-10-26 17:57 makefile
hackman@debian:~/apps/hello$ cat hello.txt
Hello World!
hackman@debian:~/apps/hello$
¿Que significa esto? Que el makefile se ejecutó correctamente en la carpeta adecuada, con los permisos adecuados, con PHP 5.2 con una instalación nueva por defecto en Apache 2 en Linux Debian Etch virtualizada con VirtualBox. Existe una variable en php.ini para prevenir esto ... pero si la cambiaste entonces sabes cual es, sino no tenias que tocarla.

Si en tu caso no funciona el problema no es de PHP, posiblemente el makefile esté ejecutando un comando que no tiene los permisos suficientes. Al usar make install se instala en /usr/bin ... ¿Acaso el usuario de apache www-root tiene permisos de escritura allí? NO ... y no los debe tener.

Saludos,

ps:

Cita:
Última edición por GatorV; Hoy a las 15:04
¿Que habrá modificado?