Recibí este error de mi servidor NGINX cuando ejecuto un script en Prestashop. Creo que esto es algo que puedo solucionar en la configuración de NGINX o algo así, pero necesito ayuda que me digan qué hacer.
Warning: file_exists(): open_basedir restriction in effect.
File(/www/wwwroot/panel_ssl_site/../app/etc/env.php) is not within
the allowed path(s): (/www/wwwroot/panel_ssl_site/) in
/www/wwwroot/panel_ssl_site/bridge_i15GpcsW.php on line 832
- ¿Como puedo resolver esto?
Gracias,
peter
Respuesta1
¿Qué es PHP open_basedir?
Limita los archivos a los que PHP puede acceder al árbol de directorios especificado, incluido el archivo en sí. Esta directivaNo es afectadodependiendo de si el Modo seguro está activado o desactivado.
Cuando un script intenta acceder al sistema de archivos, por ejemplo usando include o fopen(), se verifica la ubicación del archivo. Cuando el archivo está fuera del árbol de directorios especificado, PHP se negará a acceder a él. Todos los enlaces simbólicos se resuelven, por lo que no es posible evitar esta restricción con un enlace simbólico. Si el archivo no existe, entonces el enlace simbólico no se pudo resolver y el nombre del archivo se compara con un open_basedir (resuelto).
open_basedir puede afectar más que solo las funciones del sistema de archivos; por ejemplo, si MySQL está configurado para usar controladores mysqlnd, LOAD DATA INFILE se verá afectado por open_basedir. Gran parte de la funcionalidad extendida de PHP usa open_basedir de esta manera.
El valor especial. indica que el directorio de trabajo del script se utilizará como directorio base. Sin embargo, esto es un poco peligroso ya que el directorio de trabajo del script se puede cambiar fácilmente con chdir().
En httpd.conf, open_basedir se puede desactivar (por ejemplo, para algunos hosts virtuales) de la misma manera que cualquier otra directiva de configuración con "php_admin_value open_basedir none".
En Windows, separe los directorios con un punto y coma. En todos los demás sistemas, separe los directorios con dos puntos. Como módulo de Apache, las rutas open_basedir de los directorios principales ahora se heredan automáticamente.
La restricción especificada con open_basedir es un nombre de directorio, no un prefijo.
El valor predeterminado es permitir que se abran todos los archivos.
Conclusión
Ha utilizado open_basedir y no actualizó la ruta. Además, creo que esta pregunta debería hacerse al superusuario, ya que la evidencia me dice que no está utilizando un entorno relacionado con el negocio.
php.ini (en Debian 10)
; open_basedir, if set, limits all file operations to the defined directory
; and below. This directive makes most sense if used in a per-directory
; or per-virtualhost web server configuration file.
; Note: disables the realpath cache
; http://php.net/open-basedir
;open_basedir =
El ejemplo anterior es la configuración PREDETERMINADA en Debian 10, que suele ser también la configuración predeterminada en php.net. Lo que significa que tampoco lo has cambiado.a mano. O lo que creo, dado que los nombres de ruta incluyen "panel_ssl_site", es que creo que estás usando un Panel de administración y esto lleva a que esta pregunta quede fuera de tema. Sin embargo, cada panel de administración también debería poder cambiar esta configuración. Consulte la referencia.StackOverflow al mismo problema