por longnetpro
Cita:
La inclusión de rutas en PERL y PHP siempre ha sido un problema difícil, principalmente relacionado con el sistema operativo y el servidor WEB. Es imposible resolver este problema de ruta de manera muy inteligente. En comparación con PERL, la ruta de PHP es mucho mejor y mucho más fácil de resolver, porque la ruta relativa de PHP se puede usar en cualquier ocasión en un programa PHP, a diferencia de PERL, donde se deben usar rutas absolutas en ciertas declaraciones, lo que lleva al trasplante es extremadamente complejo. .
En base a esto, en PHP, diseñé una solución absolutamente sólida, como se describe a continuación.
en principio:
Use rutas relativas, pero use rutas absolutas dentro de rutas relativas (un poco complicado, se explica en detalle más adelante). En primer lugar, puede garantizar la portabilidad. En segundo lugar, se puede modificar fácilmente. En tercer lugar, es formulado, tiene una estructura clara y es fácil. para expandirse.
Pasos detallados:
1. Primero determine el directorio raíz de un programa. Tenga en cuenta que está en el sistema de archivos, no en el directorio virtual del servidor WEB. Sin embargo, generalmente la ruta relativa del subdirectorio del directorio es la misma que la del subdirectorio virtual. URL de.
2. Cree un settings.php en cada subdirectorio en el directorio raíz del programa definido (en realidad, no necesariamente todos, según la necesidad) y defina una variable o constante en él (las constantes son mejores porque el alcance es mayor), como APPROOT, pero este APPROOT no es una ruta absoluta, sino una ruta relativa del directorio relativo al directorio raíz del programa que especificó.
3. Escriba require_once('settings.php'); en la primera oración de todos los archivos de entrada del programa en este directorio (es decir, el primer archivo que contiene otros archivos o archivos que permiten la navegación directa en el navegador, pero por favor); tenga en cuenta que es mejor no agregar esta oración a todos los archivos incluidos; de hecho, está bien agregarla, porque puede escribir if(!definido(APPROOT)) define(APPROOOT, '../. .'); Este tipo de declaración impide la redefinición.
4. Si desea incluir otros archivos, ya sea directa o indirectamente, puede escribir include(APPROOOT.$path);, donde $path es la ruta absoluta del archivo incluido en relación con el directorio raíz del programa que especifique.
principio:
El directorio raíz del programa determinado es una ruta relativa, pero la ubicación del directorio específico es una ruta absoluta relativa a ese directorio raíz. La combinación de los dos es la ruta relativa del archivo específico relativa al directorio raíz del programa. Por ejemplo, el directorio c:wwwrootapp es el directorio raíz del programa que especificó, y luego hay dos archivos c:wwwrootappaindex.php y c:wwwrootappbinc.php . Para el subdirectorio a, APPROOT es '..', y para el directorio raíz del programa, la ruta absoluta de inc.php es $path='/b/inc.php', y la combinación de los dos es '../b /inc.php'. Si desea incluir inc.php en index.php, debe escribir include('../b/inc.php'); y ¿no es esta ruta solo la ruta APPROOT.$ que se acaba de combinar?
en conclusión:
Después del procesamiento anterior, cada ruta es absolutamente ordenada y uniforme. Lo único que es un poco engorroso es que APPROOT debe definirse en cada directorio, pero solo debe definirse una vez en el settings.php de este directorio en cada uno. directorio. Si todo su programa tiene solo un archivo de entrada, como index.php, y todos los demás archivos están incluidos directa o indirectamente en este único archivo de entrada, solo necesita agregar settings.php en el directorio donde se encuentra index.php. una vez y está bien. Si un amigo ha realizado un proyecto Delphi y ha estudiado los archivos del proyecto, encontrará que la situación que acabo de mencionar de que un programa tiene sólo un archivo de entrada principal es muy similar al proyecto Delphi, porque Delphi tiene sólo un archivo de programa principal (dpr file), el resto son todos archivos unitarios o archivos de recursos y no se pueden ejecutar de forma independiente. En PHP, si ocurre esta situación, solo necesita definir APPROOT una vez y escribir require_once('settings.php'); en la primera oración del archivo del programa principal, y todas las inclusiones posteriores pueden usar include(APPROOT.$ ruta) ;, se garantiza que no habrá problemas, a menos que no escriba esto "incluye la ruta absoluta del archivo relativa al directorio raíz del programa" $ruta.
He utilizado este método más de una vez y con buenos resultados. Además, también puede consultar la forma en que se define la ruta en WEB-INFO de JSP.
Este es un plan formulado que permanece sin cambios en respuesta a los cambios constantes. Si alguien tiene un plan mejor, ¡no dude en comentarlo! Si hay algo que no entiende, no dude en preguntar.