2011-04-18 11 views
5

Tengo un php que crea un archivo que necesita ser ejecutable (es un archivo por lotes que necesita ser ejecutado por el sistema). Por alguna razón, aunque el archivo es propiedad de apache y php se ejecuta como apache, y el archivo se crea, el script muere en la línea chmod. ¿Qué debo configurar de manera diferente para permitir que php modifique el archivo que crea? Dos líneas encima crea felizmente un directorio PARA este archivo, que cambia a 755 a la derecha, ya que lo crea. ¿Me estoy perdiendo algo obvio?¿Por qué mi script PHP chmod no puede crear un archivo?

mi línea chmod se ve así:

$uploadFilePath = "./path/to/file/"; 
    if(!is_dir($uploadFilePath)){ 
      mkdir($uploadFilePath, 0777 , true) or die("ERROR:can't create directory '$uploadFilePath'"); 
    } 
     ... 
    //write batch file 
     ... 
    chmod ($uploadFilePath . 'sftp.batch' ,0777) or die ("\ncan't chmod " . $uploadFilePath . 'sftp.batch'); 
+2

Los bits. Hazlos pegajosos. – phooji

+0

No sé lo que eso significa ... Google Sticky bits ... –

+1

¿Estás seguro de que estás utilizando el chmod, verdad? toma un valor octal en lugar de decimal. –

Respuesta

2

muy probablemente debido a umask. Intente configurarlo en 0 antes del chmod.

+0

0 hizo las cosas muy raras, pero 0077, seguido de un chmod a 0755 hizo el truco! Sin embargo, PHP aún se niega a ejecutar el archivo. GRRR –

+0

Voy a seguir adelante y le doy la marca de verificación porque al menos mi problema de modificación se resuelve ... Tendré que publicar el problema "¿por qué no ejecutará el archivo por lotes mi php" en una pregunta alternativa?) –

Cuestiones relacionadas