GNU/Linux >> Tutoriales Linux >  >> Linux

file_put_contents no crea un archivo txt

Tuve el mismo problema recientemente y tropecé con esta pregunta. Desafortunadamente, choppyfireballs, el OP dijo en un comentario que encontró su propia solución y simplemente aceptó una respuesta que no nos estaba ayudando a ninguno de nosotros ... Luego, después de una búsqueda y un éxito para hacer file_put_contents trabajar de nuevo, decidí compartir mi solución.

Los permisos de mis archivos y directorios estaban bien para aceptar cualquier escritura (asegúrese de que sus directorios sean chmod 757 esto dará la raíz y otros la concesión para escribir archivos en la ubicación). Si sigue sin funcionar como a mí, es porque tu sistema probablemente sea SELinux (Security Enhanced Linux).

Si quieres asegurarte escribe setenforce 0 esto cambiará a selinux al modo permisivo, ejecute su secuencia de comandos nuevamente, si funciona, significa que el problema está bien descrito.

En ese caso, active selinux atrás setenforce 1 y prueba ls -Zl en el directorio donde se encuentra el directorio de su proyecto. esto le dará una línea como

drwx---r-x.  9  root   root  system_u:object_r:httpd_sys_content_t:s0  4096  Dec  8  00:25  project

o algo diferente pero httpd_sys_content_t si usaste chcon para transferir el contexto de un directorio a este. pero si no tienes httpd_sys_content_t está bien porque necesitamos cambiar el contexto de ese directorio de todos modos.

primero debe aceptar cualquier public_content_rw_t contextos para escribir el archivo. Tipo

setsebool -P httpd_anon_write on

Esto establecerá (permanentemente) el booleano httpd_anon_write de SELinux a verdadero y cualquier contexto denominado como public_content_rw_t tendrá los derechos para escribir cualquier archivo en su propia ubicación.

Ahora debe decirle a SELinux que el directorio de su proyecto es public_content_rw_t o aún no podrá escribir archivos. Escriba:

semanage fcontext --add --type public_content_rw_t "/project(/.*)?"

y restorecon -RvF /project decirle a selinux para aplicar las especificaciones anteriores.

Ahora su directorio es public_content_rw_t y debería poder escribir archivos.


Es probable que su problema se deba a que Apache no tiene permisos para escribir en la ubicación del archivo que especificó. Vaya a ese directorio y verifique los permisos y la propiedad del grupo con el ls comando:

cd "My working file location"
ls -l .

Hay tres columnas en la salida que muestran los permisos, el propietario y el grupo del directorio. Lo más probable es que sean propiedad de root y no tengan permisos para apache para escribir en el directorio.

Si este es el caso, verá que aparece un error en su registro de apache cuando intente crear el archivo. Intente seguir sus registros mientras ejecuta el script en su navegador:

tail -f /var/log/apache2/error.log

Linux
  1. ¿Eliminar todos los archivos en un directorio cuyo nombre no coincide con una línea en una lista de archivos?

  2. ¿Archivos Cat con directorio?

  3. ¿Por qué Nullglob no es predeterminado?

  4. Tar:¿Extraer un solo archivo a un directorio sin crear subcarpetas?

  5. Error:Tcl.h no encontrado (no existe tal archivo o directorio)?

Bash:escribir en archivo

¿Diferencia de cálculo de tamaño de directorio?

¿Escribir todo el desplazamiento hacia atrás de Tmux en un archivo?

pip install pickle no funciona - no existe tal archivo o directorio

xauth no crea el archivo .Xauthority

shebang o no shebang