Tengo unas pocas llamadas al is_dir
en una página. Ellos siempre han trabajado sin problemas.PHP: open_basedir ruta permitida
Hace unos días, la empresa de alojamiento actualizó PHP de 5.2 a 5.3. Desde entonces, todas mis llamadas a is_dir
han dado como resultado el error siguiente (mensaje):
Warning: is_dir(): open_basedir restriction in effect.
File(/home/virtual/domain.com/public_html/galleries/img/002.JPG/)
is not within the allowed path(s):
(/home/virtual/domain.com:/home/virtual/_tmp)
in /home/virtual/domain.com/public_html/index.php on line 201
Esto me intriga.
Es evidente que, de acuerdo con el mensaje de error (y php_info
también), el directorio /home/virtual/domain.com
(sin barra final, por lo que incluir subdirectorios) está incluido/habilitada en open_basedir
, y los archivos que is_dir
está tratando de recorrer son todos ubicado en subcarpetas debajo de esa carpeta. Entonces, ¿por qué no están dentro de los caminos permitidos? ¡Claramente lo son!
Curiosamente, este error aparece que sólo aparecen cuando is_dir
vuelve falsa, es decir, cuando el archivo es no una carpeta, pero un archivo normal. Parece iterar a través de directorios todo bien sin lanzar errores.
Pregunta similar publicada anteriormente aquí: Open_basedir restriction oddness (no se encontró ninguna solución).
¿Alguien tiene alguna idea?
(Nota: El cambio de la configuración de PHP no es una opción, ya que esto es un servidor compartido y no tener ningún acceso de administrador)
¿Este es el mensaje de error real? ¿O hay ciertos personajes especiales en algún camino? – SteAp
Algunas rutas tienen algunos caracteres especiales: '&' (ampersand) y '_' (guión bajo). Pero el error aparece incluso para aquellas rutas que no contienen ningún tipo de caracteres especiales (a menos que las letras mayúsculas cuenten como caracteres especiales). Y los caracteres especiales están todos en nombres de directorio (y se analizan e iteran correctamente en aquellos casos en que 'is_dir' se evalúa como' TRUE'), nunca en nombres de archivo (que es donde ocurre el error). –