2009-08-06 15 views
19

estoy usando file_put_contents para crear un archivo. Mi proceso php se ejecuta en un grupo con permisos para escribir en el directorio. Sin embargo, cuando se llama al file_put_contents, el archivo resultante no tiene permisos de escritura grupales (se crea bien la primera vez). Esto significa que si intento sobrescribir el archivo, falla debido a la falta de permisos.¿cómo puedo crear un archivo con file_put_contents que tenga permisos de escritura grupales?

¿Hay una manera de crear el archivo con permisos de escritura del grupo?

Respuesta

21

Puede intentar configurar el umask antes de llamar al file_put_contents: cambiará los permisos predeterminados que se le darán al archivo cuando se cree.

La otra forma (mejor, según la documentación) es utilizar chmod para cambiar los permisos, justo después de que se haya creado el archivo.


Bueno, después de volver a leer la pregunta, espero que lo entendí bien ...

2

para abrir el archivo y escribir sobre el contenido, entonces necesita permisos de escritura en el archivo. Es importante entender la distinción. Para sobrescribir el archivo completo, realmente necesita permisos de escritura en el directorio .

Uso chmod() para establecer lo que es apropiado en el archivo y/o directorio si quieres ser explícito al respecto.

+0

Hmm ... SI TENGO permisos para el directorio, el problema es que quiero llamar a file_put_contents varias veces desde diferentes scripts en el mismo archivo, pero los tiempos sucesivos fallan. –

21

Ejemplo 1 (conjunto de archivos en permisos de lectura-escritura para el propietario y el grupo, y leído por los demás):

file_put_contents($filename, $data); 
chmod($filename, 0664); 

Ejemplo 2 (que se puede escribir archivo por grupo sin cambiar otros permisos):

file_put_contents($filename, $data); 
chmod($filename, fileperms($filename) | 16); 

Ejemplo 3 (hacer escribible archivo por todo el mundo sin cambiar otros permisos):

file_put_contents($filename, $data); 
chmod($filename, fileperms($filename) | 128 + 16 + 2); 

128, 16, 2 son para escribible para el propietario, grupo y otra respectivamente.

Cuestiones relacionadas