Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   PHP (https://www.clubdelphi.com/foros/forumdisplay.php?f=15)
-   -   Acceder carpeta distinta a la que estamos. (https://www.clubdelphi.com/foros/showthread.php?t=47277)

papulo 23-08-2007 13:50:43

Acceder carpeta distinta a la que estamos.
 
Tengo un archivo en "c:/www/html/index/autocomp.php" que me incluye dentro unos includes a unos archivos que están en otra carpeta distinta a "html"

Si pongo la ruta completa "c:/www/lib/funciones_conexiondb.php" en el include de autocomp.php me funciona sin problemas las funciones del otro archivo, pero me gustaría saber si hay una forma mas elegante y que acarree menos problemas en el futuro (para cuando lo pase al RX-100 con ubuntu).

Gracias mil.

roman 23-08-2007 15:17:41

Una opción es centralizar este tipo de rutas en un archivo de configuración que incluyes en todos tus scripts. Por ejemplo:

config.php

Código PHP:

define('DIR_BASE''c:/www' DIRECTORY_SEPARATOR);
define('DIR_LIB'DIR_BASE 'lib' DIRECTORY_SEPARATOR);
define('DIR_THIRDPARTY'DIR_LIB 'thirdparty' DIRECTORY_SEPARATOR);
define('DIR_PDF'DIR_THIRDPARTY 'fpdflib' DIRECTORY_SEPARATOR);
define('DIR_TEMPLATES'DIR_BASE 'templates' DIRECTORY_SEPARATOR);

etc

DIRECTORY_SEPARATOR es una constante predefinida que toma el valor correcto según si estás en unix o windows. Esto se lo aprendí a dec, y es muy útil porque evitas cargar la constante en el resto de scripts:

Código PHP:

require_once('config.php');
require_once(
DIR_PDF 'fpdf.php'); 

en lugar de

Código PHP:

require_once('config.php');
require_once(
DIR_PDF DIRECTORY_SEPARATOR 'fpdf.php'); 

El archivo config.php en sí lo puedes situar en la raíz de los documentos http, por ejemplo, c:/www/html.

Si mantienes una misma estructura de directorios:

Código:

base
  |
  +---- lib
  |      |
  |      +---- thirdparty
  |      |      |
  |      |      +---- fpdf
  |      |      |
  |      |      +---- biff
  |      |
  |      +---- database
  |      |
  |      +---- whatever
  |
  +---- templates
  |
  .
  .
  .

en principio bastará cambiar la ruta base pues todas las demás derivan de ella.

Por otra parte, te comento que no es necesario poner tus directorios fuera de la raíz web. Si usas Apache, puedes restringir el acceso externo a directorios completos poniendo un archivo .htaccess dentro:

.htaccess
Código:

Order allow,deny
aunque para ello, el servidor debe habilitar la reescritura de directivas en tu raiz web.

// Saludos

papulo 23-08-2007 16:12:09

Todos los directorios están dentro del raiz web, lo que pasa es que están en diferentes "paths" y por eso ando perdido.

Acabo de leer tu respuesta pero se me presenta compleja, voy a leermela con mas calma y ya comentaré como ha ido.

Gracias por la información.

papulo 23-08-2007 18:33:03

Ya lo he implementado, sin apenas problemas.

La verdad es que es una solución excepcional, gracias Roman y gracias Dec.

Da gusto tener a compañeros así por el foro, como una red de protección o algo similar :)

Un fuerte saludo.

dec 23-08-2007 18:58:47

Hola,

He subido de una forma un tanto rara (pero parece que efectiva) mi "proyecto" aPHP, tanto su versión para PHP 4 (que ya no continuaré) como su versión para PHP 5 (en la que trabajo de vez en cuando). No sé si te interesará echarle un vistazo papulo, pero, yo no podía dejar pasar esta ocasión para hacerlo. :D :D

http://web.madritel.es/personales2/amcalderon/aphp/

papulo 24-08-2007 09:41:20

Requete mirado.

Muchos "Dankes" Dec.


La franja horaria es GMT +2. Ahora son las 19:38:49.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi