Categories

Plantillas Destacadas

Error: Open_basedir restriction in effect. File(X) is not within the allowed path(s): Y

Alex Ross octubre 22, 2012
Rating: 3.3/5. From 15 votes.
Please wait...

La protección PHP open_basedir es una medida de seguridad de modo seguro que impide que los usuarios abran ficheros o scripts situados fuera de su directorio personal con PHP, a menos que la carpeta ha sido excluida específicamente. Si el ajuste PHP open_basedir está activado, todas las operaciones de ficheros serán limitadas para los ficheros en el directorio especificado, y así previene que un usuario no autorizado tenga acceso alos scripts php. Si un script trata de abrir un fichero por medio de, por ejemplo, fopen() o gzopen(), la ubicación del fichero es verificada. Si el fichero se encuentra fuera del directorio especificado o permisible, PHP negará a abrirlo y se puede obtener los errores:

Warning: file_exists() [function.file-exists]: open_basedir restriction in effect. File(/home/user_name/public_html/wp-content/uploads/2006/12/picture.jpg) is not within the allowed path(s): (/home/user_name:/usr/lib/php:/usr/local/lib/php:/tmp) in /home/user_name/public_html/wp-admin/inline-uploading.php on line 226

Por favor, revise el manual oficial de PHP para obtener más información sobre open_basedir.

Le recomendamos ponerse en contacto con su proveedor de hosting para que ellos resuelvan el problema.

Hay dos métodos para resolver este problema:

  1. La primera solución es desactivar la protección PHP open_basedir o remover la protección para determinadas cuentas de usuarios privilegiados, o permitir el acceso al directorio adicional para los scripts PHP.

    • Si Usted está utilizando WebHost Manager (WHM) del panel de control, puede desactivar fácilmente la protección de PHP open_basedir o excluir ciertos usuarios por medio de WHM. Sólo tiene que abrir “Tweak Security” en la sección “Security” (Seguridad), hacer clic en el enlace “Configure” (Configurar) de “Php open_basedir Tweak”. Dentro de esta opción se puede activar o desactivar la Protección php open_basedir o excluir e incluir hosts.

    • Si Usted está utilizando el panel de control de hosting Plesk, es posible que tenga que editar manualmente el fichero de configuración de Apache vhost.conf y vhost_ssl.conf, y añadir o editar las siguientes líneas de php_admin_value open_basedir:

      php_admin_value open_basedir none php_admin_value open_basedir /full/path/to/dir:/full/path/to/directory/httpdocs:/tmp

      Las rutas detrás de open_basedir son los directorios específicamente permitidos para los scripts PHP en la cuenta de dominio de host virtual, por lo que se puede añadir más directorios con los ficheros que se neceista abrir por medio de PHP, cada uno separado por color “:”.

      Ejecute el siguiente comando para hacer efectivos los cambios y reinicie el servidor web Apache httpd (reinicio de apache2ctl o reinicio de httpd).

    • Si Usted tiene que editar manualmente el fichero de configuración de Apache para desactivar la protección PHP open_basedir, abra el fichero httpd.conf y búsque las líneas que comienzan con los siguientes caracteres:

      php_admin_value open_basedir …..

      Reemplace toda la línea debajo de host virtual para la cuenta de usuario con la siguiente línea:

      php_admin_value open_basedir none
  2. También se puede permitir que sus scripts PHP para accedan al directorio adicional y en este caso no es necesario desactivar la protección. El directorio adicional puede ser añadido a la línea, separado con color “:”. Por ejemplo, para añadir /new_directory a la lista de permitidos:

    php_admin_value open_basedir “/home/user_account/:/usr/lib/php:/usr/local/lib/php:/tmp” php_admin_value open_basedir “/home/user_account/:/usr/lib/php:/usr/local/lib/php:/tmp:/new_directory

    Reinicie Apache después de terminar la edición. Tenga en cuenta que la restricción de la lista de permitidos del directorio es en realidad un prefijo, no es un nombre de directorio. Esto significa que “open_basedir = /dir/incl” también permite el acceso a “/dir/include” y “/dir/incls”. Si Usted desea restringir el acceso a sólo el directorio especificado, utilice diagonal. Por ejemplo: “open_basedir = /dir/incl/”.

Submit a ticket

Si Usted todavía no puede encontrar un tutorial suficiente para arreglar su problema, por favor use el siguiente enlace para enviar un ticket a nuestro equipo de soporte técnico. Nosotros enviaremos nuestra respuesta dentro de próximas 24 horas: Enviar un ticket