¿Cómo puedo relajar la restricción open_basedir de PHP?
security apache (3)
open_basedir limita los archivos que PHP puede abrir dentro de un árbol de directorios.
Estoy almacenando varias bibliotecas de clases y archivos de configuración fuera de mi directorio raíz web. De esta forma, el servidor web no los hace accesibles al público. Sin embargo, cuando trato de incluirlos desde mi aplicación obtengo un error de restricción open_basedir como este:
Advertencia: realpath () [function.realpath]: open_basedir restricción en efecto. El archivo (/var/www/vhosts/domain.tld/zend/application) no está dentro de la (s) ruta (s) permitida (s): (/var/www/vhosts/domain.tld/httpdocs:/tmp) en / var / www / vhosts / domain.tld / httpdocs / index.php en la línea 5
Mi raíz web está aquí:
/var/www/vhosts/domain.tld/httpdocs
Mis bibliotecas y el directorio de configuración están aquí:
/var/www/vhosts/domain.tld/zend
¿Cuál sería la mejor solución para relajar la restricción open_basedir para que el árbol de directorios en la carpeta de dominio esté disponible para mi aplicación? Tengo una serie de dominios con los que quiero hacer esto, y obviamente también soy cauteloso con la creación de vulnerabilidades de seguridad.
Nota: Estoy usando CentOS, Apache, Plesk y tengo acceso root ssh al servidor. Y aunque esto no se aplica directamente a Zend Framework, lo estoy usando en este caso. Así que aquí está la inclusión de bootstrap de Zend:
define(''APPLICATION_PATH'', realpath(dirname(__FILE__) . ''/../zend/application/''));
set_include_path(APPLICATION_PATH . ''/../zend/library'' . PATH_SEPARATOR . get_include_path());
En Parallels Plesk Panel (por ejemplo, 1 y 1) puede hacerlo en la configuración del panel de PHP:
aquí:
También puede hacerlo fácilmente por directorio utilizando el archivo de configuración Apache (suponiendo que este sea su servidor web) (por ejemplo, httpd.conf)
<Directory /var/www/vhosts/domain.tld/httpdocs>
php_admin_value open_basedir "/var/www/vhosts/domain.tld/httpdocs:/var/www/vhosts/domain.tld/zend"
</Directory>
también puedes eliminar completamente la restricción con
<Directory /var/www/vhosts/domain.tld/httpdocs>
php_admin_value open_basedir none
</Directory>
agregue las rutas a las que necesita acceder (/var/www/vhosts/domain.tld/zend) a su directiva open_basedir (puede especificar varias rutas usando el separador de ruta '':'' o '';'' en windows)
tenga en cuenta que los valores en open_basedir son prefijos, lo que significa que todo lo que se encuentre debajo de /var/www/vhosts/domain.tld/zend será accesible