Estoy creando un archivo nuevo usando fopen.fopen Crea archivo, pero ¿cómo cambiar los permisos?
$filename = 'user_data/10.xml';
$openhandle = fopen($filename, 'w+');
Entonces comprobar si el archivo se ha creado usando: file_exists()
función.
El problema es: El archivo se está creando con algún propietario, probablemente el nombre de la carpeta, pero no soy yo. Además, los permisos del archivo son solo readable by the owner
. Y como no soy el propietario, no puedo leer el archivo ni cambiar los permisos.
Pero si intento de cambiarlo usando:
chown($filename, 'myusername');
chmod($filename, 777);
He intentado cambiar el propietario del archivo y los permisos utilizando el terminal usando sudo
. Eso funcionó correctamente. Así que también intenté usar las funciones anteriores con shell_exec()
para que se ejecute en la raíz.
Pero no tuvo suerte.
Aunque no tengo mucha experiencia con números de permisos de archivos, el comando chown tampoco funciona.
Entonces, ¿cómo debo cambiar el propietario y los permisos del archivo para que yo sea el propietario y pueda ser leído y escrito por mis otros scripts PHP?
Cuando se carga el archivo (antes de cualquier chmod), ¿cuáles son los permisos en el archivo, cuáles son los permisos en la carpeta user_data y quién es el propietario asignado? –
Creo un nuevo archivo vacío y luego escribo usando fwrite(). Los permisos en el archivo son: Propietario y Grupo: www-data Propietario: LEA Grupo: ejecutar Otros: ejecutar En la carpeta user_data, yo soy el dueño y todas las tres personas que se ponen a leer, escribir , Ejecutar ... –
Como dice TimWickstrong, debe agregar un 0 inicial al comando chmod, pero también puede ocurrir que no tenga permiso para chmod. Pruebe $ chmoded = chmod ($ filename, 0777); if (! $ chmoded) {echo "No se pudieron cambiar los permisos del archivo";} ... también, si los permisos del archivo son 777, no hay necesidad de chown. –