Archivos de acceso HTML fuera de la carpeta pública

Tengo un script php llamado "upload.php" que tiene un par de archivos que necesita para funcionar. No quiero que la gente pueda acceder a los archivos que necesita escribiendo el nombre del archivo en la URL. ¿Qué debo hacer para que upload.php pueda acceder a los que están fuera de la carpeta pública?

Supongo que sería posible ponerlo todo fuera de la carpeta pública y hacer un archivo upload.html para apuntar a upload.php. Si es así, ¿cómo hacer eso?

preguntado el 22 de mayo de 12 a las 20:05

2 Respuestas

Sí, si no desea que las personas accedan a esos archivos desde fuera del servidor, lo mejor que puede hacer es mantenerlos fuera de la carpeta pública, en otra parte del sistema de archivos del servidor. PHP, al interpretarse del lado del servidor, aún podrá acceder a los archivos (suponiendo que los permisos sean correctos).

La forma en que accedería a ellos depende de cómo "debe funcionar" en su código. Suponiendo por un momento que los archivos en cuestión son archivos PHP que deben incluirse, incluiyendo y exigir ambos toman rutas del lado del servidor y pueden hacer referencia a cualquier archivo en el sistema de archivos del servidor.

Algo como esto:

include '/full/path/to/file.php';

contestado el 22 de mayo de 12 a las 20:05

También puede poner esos archivos php en una carpeta, digamos "incluye" y establecer un archivo .htaccess en ella:

<Limit GET POST PUT>
  order deny,allow
  deny from all
  allow from 127.0.0.1
</Limit>

contestado el 22 de mayo de 12 a las 20:05

Encontré esto con un requisito similar. Utilicé su sugerencia y el .php no se puede solicitar directamente, lo cual es bueno. Pero desafortunadamente mi php tampoco puede incluirse desde otra página de mi sitio. Los permisos son 644. ¿Alguna idea? - ojos cuadrados

@square_eyes, ¿cómo los incluyes? Si estás haciendo un http solicitud, entonces tal vez también debería cambiar el allow from parte ? - HamZa

Estoy usando <?php include 'my/path/myfile.php' ; ?>. Otra cosa a tener en cuenta es que parte del archivo parece estar incluido. Obtengo un cuadro Div, que se define en la salida de mi archivo .php. ¿Podría ser el javascript que también tengo allí el que está fallando? El archivo que incluyo ejecuta un pequeño script que hace referencia a dos bibliotecas js en la misma carpeta. - ojos cuadrados

En otras palabras. Mi archivo .php que incluyo consulta una base de datos, escribe una matriz con javascript, luego se refiere a una biblioteca (Flotador) que representa un gráfico js. Esto termina en la página en la que tengo el include ejecutándose. Todo funciona hasta que configuro .htaccess para bloquear el acceso al archivo independiente. - ojos cuadrados

@square_eyes se está poniendo bastante complicado ahora, ¿podrías unirte al Sala de chat PHP ? - HamZa

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.