GNU/Linux >> Tutoriales Linux >  >> Panels >> cPanel

Error de restricción en efecto de scripts PHP open_basedir

El ajuste de protección PHP open_basedir es una medida de seguridad de modo seguro que evita que los usuarios abran archivos o scripts ubicados fuera de su directorio de inicio con PHP, a menos que la carpeta se haya excluido específicamente. La configuración de PHP open_basedir, si está habilitada, garantizará que todas las operaciones de archivos se limiten a los archivos en un directorio determinado y, por lo tanto, evitará que los scripts php para un usuario en particular accedan a los archivos en la cuenta de un usuario no autorizado. Cuando un script intenta abrir un archivo con, por ejemplo, fopen() o gzopen(), se comprueba la ubicación del archivo. Cuando el archivo está fuera del árbol de directorios especificado o permitido, PHP se negará a abrirlo y pueden ocurrir los siguientes errores:

Advertencia:file_exists() [function.file-exists]:restricción open_basedir en vigor. El archivo (/home/user_name/public_html/wp-content/uploads/2006/12/picture.jpg) no está dentro de las rutas permitidas:(/home/user_name:/usr/lib/php:/usr/local /lib/php:/tmp) en /home/user_name/public_html/wp-admin/inline-uploading.php en la línea 226

El mensaje de error anterior aparece en un registro de errores del servidor web Apache httpd (error_log) que aloja un blog de WordPress. Sin embargo, el problema puede ocurrirle a todos los sistemas o sitios web que usan PHP como lenguaje de secuencias de comandos.

La solución al problema de la restricción de open_basedir es deshabilitar la protección de PHP open_basedir por completo, o excluir la protección para ciertas cuentas de usuario privilegiadas, o permitir el acceso al directorio adicional para scripts de PHP.

Si está utilizando cPanel WebHost Manager (WHM), puede deshabilitar fácilmente la protección PHP open_basedir o excluir a ciertos usuarios de la protección con WHM. Simplemente vaya a "Tweak Security" en la sección "Seguridad", luego seleccione el enlace "Configurar" para "Php open_basedir Tweak". En su interior, puede habilitar o deshabilitar la protección php open_basedir, o excluir e incluir hosts de la protección.

Si está utilizando el panel de control de alojamiento Plesk, es posible que deba editar manualmente el archivo de configuración de Apache de vhost.conf y vhost_ssl.conf, y agregar o editar las siguientes líneas php_admin_value open_basedir a lo siguiente:

<Directory /full/path/to/the/directory/httpdocs>
php_admin_value open_basedir none
</Directory>

<Directory /full/path/to/the/directory/httpdocs>
php_admin_value open_basedir /full/path/to/dir:/full/path/to/directory/httpdocs:/tmp
</Directory>

Nota:para hosts SSL en el archivo vhost_ssl.conf, la ruta del directorio terminará con "httpsdocs" en lugar de "httpdocs".

Las rutas (arriba es solo un ejemplo y se reemplazará con la ruta real) que detrás de open_basedir son los directorios que permitieron específicamente el acceso de los scripts PHP en la cuenta de dominio vhost, por lo que puede agregar más directorios en los que los archivos se almacenan y se necesitan. para ser abierto por PHP, cada uno separado por color “:”. Pero tenga cuidado, ya que podría exponer su sistema a fraudes de seguridad.

Una vez hecho esto, ejecute el siguiente comando para que los cambios sean efectivos y luego reinicie el servidor web Apache httpd (reinicio de apache2ctl o reinicio de httpd):

$PRODUCT_ROOT_D/admin/sbin/websrvmng -v -a

Si tiene que editar manualmente el archivo de configuración de Apache para deshabilitar la protección PHP open_basedir, simplemente abra el archivo httpd.conf y busque las líneas que comienzan con los siguientes caracteres:

php_admin_value open_basedir …..

Reemplace toda la línea debajo del host virtual para la cuenta de usuario del dominio cuya protección desea deshabilitar con la siguiente línea para deshabilitarla:

php_admin_value open_basedir none

También puede optar por permitir que sus scripts PHP accedan a un directorio adicional sin deshabilitar la protección. Se puede agregar un directorio adicional a la línea, separado con el color “:”. Por ejemplo, para agregar /nuevo_directorio 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 de editar. Tenga en cuenta que la restricción de la lista de directorios permitidos anterior es en realidad un prefijo, no un nombre de directorio. Esto significa que “open_basedir =/dir/incl” también permite el acceso a “/dir/include” y “/dir/incls” si existen. Cuando desee restringir el acceso solo al directorio especificado, termine con una barra inclinada. Por ejemplo:“open_basedir =/dir/incl/”.


cPanel
  1. Llamada a función indefinida simplexml_load_file() – Error de PHP [Resuelto]

  2. No se puede encontrar pspell:corrige el error de configuración de PHP

  3. Error fatal de Php:llamada a la función indefinida Thesql_connect ()?

  4. Cómo activar el registro de errores de PHP

  5. Acerca de PHP

Cómo ejecutar scripts a través de trabajos cron

¿Cómo habilitar el informe de errores de PHP en cPanel?

Habilite el registro de errores de PHP en alojamiento web y de revendedor

¿Cómo activo los mensajes de error de PHP en cPanel?

¿Cómo aumentar el tamaño máximo de carga de archivos / valores de PHP en cPanel?

Cómo crear un registro de errores de PHP en cPanel