lunes, 17 de noviembre de 2008

Error fopen - permiso denegado

Abres tu navegador en linux y...

es > function:fopen failed to open stream - permission denied
en > function:fopen failed to open stream - permiso denegado

Éste mensaje de error es muy habitual cuando estamos reutilizando código, o probando nuestro servidor web por primera vez con algún tipo de CMS o librería de terceros.

Hoy mismo me ha vuelto a suceder, instalando una librería que realizaba un append a un fichero de texto cualquiera sobre mi servidor "xampp" sobre Ubuntu.

¿Por qué?
Éste error puede suceder, o bien por tema de permisos o bien por tema de rutas. Puede daros bastantes dolores de cabeza si os ofuscáis intentando aplicar una solución y no funciona... así que probar las dos al menor problema.

Solución permisos: chmod sobre los ficheros afectados
Solución rutas: la mejor solución es asegurarse de que estamos indicando correctamente la ruta al fichero, puesto que dependiendo de si es una ruta absoluta o relativa, fopen tendrá acceso o no a él. La mejor opción es utilizar la variable predefinida de PHP $_SERVER["DOCUMENT_ROOT"] acompañado de la ruta relativa dentro del servidor web hacia nuestro fichero en cuestión.

Es decir, si quiero escribir sobre el fichero situado en htdocs/dir/test.txt le enviaré a fopen el parámetro $_SERVER["DOCUMENT_ROOT"]."/dir/test.txt"
Si ésto falla, quizás sea porque DOCUMENT_ROOT no está bien definido.

Saludos

2 comentarios:

Eloi A. dijo...

juas... estre mismo problema me lo encontré hace años y acabé utilizando la misma solución. XD

Ausiàs dijo...

¡Muchas gracias! Sigue siendo útil en 2013.