Thursday, May 9, 2019

Ruta relativa o ruta absoluta y cómo configurar en PHP RePHP

En términos generales, hay dos problemas diferentes para resolver cuando se trata de rutas:

  1. Rutas del sistema de archivos (que debe usar para incluye un archivo)
  2. Rutas de URL (que debe usar al crear una URL interna para su aplicación)

Estas son dos bestias diferentes.

Rutas del sistema de archivos

Si su aplicación tiene un solo punto de entrada (por ejemplo, un index.php que luego delega a la lógica de negocios apropiada después de inspeccionar la cadena de consulta de la URL), entonces puede hacer

   $ ROOT_DIR = dirname (__ FILE __);  

dentro de ese archivo, y luego puede componer las rutas del sistema de archivos para cualquier archivo en su distribución agregando $ ROOT_DIR .

Si su aplicación no tiene un solo punto de entrada, entonces esta opción no está disponible y tiene estas alternativas:

  1. Use rutas relativas en todas partes (esto es lo que le gustaría evitar).
  2. Llame a una función de "resolución de ruta" de su script de entrada actual, pasando la ruta relativa del script al directorio base como un parámetro, por ejemplo:

    // para un script en $ ROOT_DIR. & # 39; / comandos & # 39; haz esto:

    $ ROOT_DIR = resolver_root (__ FILE__, DIRECTORY_SEPARATOR. & # 39; comandos & # 39;);

    La información adicional sobre la ruta relativa permitirá que la raíz de resolucion_root ($ nombre de archivo, $ relativa) determine qué parte de dirname ($ nombre de archivo) es la raíz de la aplicación. Sin embargo, la técnica es difícil de administrar y requiere que codifique nombres de rutas relativas dentro de cada punto de entrada de la aplicación, por lo que recomendaría no usarla nunca.

  3. Requiera que la configuración de su aplicación incluya una variable codificada con la ruta "raíz", similar a $ ROOT_DIR anterior. Si su aplicación tiene un instalador, durante la instalación puede hacer que resuelva la ruta raíz con precisión haciendo algo como:

$ installer_dir = dirname (__ FILE__); // Supongamos que esta es la ruta raíz + "/ install" $ ROOT_DIR = realpath ($ installer_dir.DIRECTORY_SEPARATOR. & # 39; .. & # 39;);

El instalador escribiría esta ruta en la configuración de su aplicación. Si su aplicación no tiene un instalador, entonces necesita codificar la ruta base a su configuración manualmente o usar otra opción.

El uso de $ _ SERVER ['DOCUMENT_ROOT'] no es una solución satisfactoria para este problema. Hace el trabajo solo si su aplicación está instalada en la raíz del documento . Si la raíz de su documento es / var / www y su aplicación está instalada en / var / www / app no tiene manera de saber qué agregar / app a las rutas.

Actualización: con con respecto a la respuesta que menciona la ejecución de pwd en Linux: no haga eso. Siempre. Invocar el shell del sistema para cada solicitud HTTP matará su servidor web más rápido de lo que sus usuarios pueden hacer clic en sus enlaces. Podría funcionar para una aplicación interna que tiene un número pequeño de usuarios conocidos y no tiene expectativas reales de rendimiento, pero ¿por qué no simplemente cifrar esa ruta si está bien con una solución rápida y sucia?

Rutas de URL

Dentro de cualquier aplicación real, también debe crear URL relacionadas con la URL base de su aplicación (por ejemplo, hacer ).

Nuevamente, si su aplicación tiene un solo punto de entrada (por ejemplo, index.php ), puede usar $ _ SERVER ['REQUEST_URI'] para resolver la URL "básica" de su solicitud . Una implementación simple (que debería funcionar bien para usted) es simple: es la parte de la ruta URL que aparece antes de index.php . Sin embargo, una implementación a prueba de balas que resuelva las peculiaridades de los diferentes servidores web y la configuración de PHP es algo más complicada.

Si su aplicación no tiene un solo punto de entrada, entonces tiene el mismo problema que con las rutas del sistema de archivos. La solución también es la misma: codifique la URL en su configuración manualmente, haga que el instalador la codifique durante la instalación o resuélvala utilizando el conocimiento codificado de sus rutas relativas según sea necesario.

Incluye trabajo a través del sistema de archivos o http.

si usa include /some/file.php PHP se ve en la raíz del servidor.

Puedes usar

   incluye $ _SERVER ['DOCUMENT_ROOT']. & # 39; /some/file.php&#39 ;;  

o tal vez cambie open_basedir en php.ini (o.htaccess). es decir, open_basedir = / some / where / para usar el directorio raíz /file.php de ESE en lugar de la raíz del servidor o la raíz del documento. También puede ver la sección "rutas y directorios" en php.ini

Utilizo rutas absolutas, pero también comienzo cualquier proyecto PHP personalizado con un archivo de rutina de carga donde defino las rutas que se usan más comúnmente como constantes, basadas en valores Extraído de $ _SERVER .

Así es como defino mis rutas raíz:

   define ("LOCAL_PATH_ROOT", $ _SERVER ["DOCUMENT_ROOT"]); define ("HTTP_PATH_ROOT", isset ($ _ SERVER ["HTTP_HOST"])? $ _SERVER ["HTTP_HOST"]: (isset ($ _ SERVER ["SERVER_NAME"])? $ _SERVER ["SERVER_NAME"]: & # 39; _UNKNOWN _ & # 39;)) ;  

La ruta ] LOCAL_PATH_ROOT es la raíz del documento. La ruta HTTP_PATH_ROOT es el equivalente cuando se accede a la misma ruta a través de HTTP.

En ese momento, la conversión de cualquier ruta local a una ruta HTTP se puede realizar con el siguiente código:

   str_replace (LOCAL_PATH_ROOT, RELATIVE_PATH_ROOT, $ my_path)  

Si desea garantizar la compatibilidad con servidores basados ​​en Windows, también debes reemplazar el separador de directorios con un separador de URL:

   str_replace (LOCAL_PATH_ROOT, RELATIVE_PATH_ROOT, str_replace (DIRECTORY_SEPARATOR, & # 39; / & # 39 ;, my mypath))  

Aquí está el código de inicio completo Estoy usando para la plantilla de PHP PowerTools:

   definido (& # 39; LOCAL_PATH_BOOTSTRAP & # 39;) || define ("LOCAL_PATH_BOOTSTRAP", __DIR__); // ------------------------------------------------ ----------------------- // DEFINIR ALIAS DEL SEPERADOR // //------------------ -------------------------------------------------- - define ("URL_SEPARATOR", & # 39; / & # 39;); define ("DS", DIRECTORY_SEPARATOR); define ("PS", PATH_SEPARATOR); define ("US", URL_SEPARATOR); // ------------------------------------------------ ----------------------- // DEFINIR LAS RAÍCES DE RAÍZ // // -------------------- -------------------------------------------------- - define ("RELATIVE_PATH_ROOT", & # 39; & # 39;); define ("LOCAL_PATH_ROOT", $ _SERVER ["DOCUMENT_ROOT"]); define ("HTTP_PATH_ROOT", isset ($ _ SERVER ["HTTP_HOST"])? $ _SERVER ["HTTP_HOST"]: (isset ($ _ SERVER ["SERVER_NAME"])? $ _SERVER ["SERVER_NAME"]: & # 39; _UNKNOWN _ & # 39;)); // ------------------------------------------------ ----------------------- // DEFINIR LOS CAMINOS RELATIVOS // -------------------- -------------------------------------------------- - define ("RELATIVE_PATH_BASE", str_replace (LOCAL_PATH_ROOT, RELATIVE_PATH_ROOT, getcwd ())); define ("RELATIVE_PATH_APP", dirname (RELATIVE_PATH_BASE)); define ("RELATIVE_PATH_LIBRARY", RELATIVE_PATH_APP. DS. & # 39; vendor & # 39;); define ("RELATIVE_PATH_HELPERS", RELATIVE_PATH_BASE); define ("RELATIVE_PATH_TEMPLATE", RELATIVE_PATH_BASE .DS. & # 39; templates & # 39;); define ("RELATIVE_PATH_CONFIG", RELATIVE_PATH_BASE, DS. & # 39; config & # 39;); define ("RELATIVE_PATH_PAGES", RELATIVE_PATH_BASE, DS. & # 39; pages & # 39;); define ("RELATIVE_PATH_ASSET", RELATIVE_PATH_BASE, DS. & # 39; asset & # 39;); define ("RELATIVE_PATH_ASSET_IMG", RELATIVE_PATH_ASSET, DS. & # 39; img & # 39;); define ("RELATIVE_PATH_ASSET_CSS", RELATIVE_PATH_ASSET .DS. & # 39; css & # 39;); define ("RELATIVE_PATH_ASSET_JS", RELATIVE_PATH_ASSET .DS. & # 39; js & # 39;); // ------------------------------------------------ ----------------------- // DEFINIR LOS CAMINOS LOCALES // -------------------- -------------------------------------------------- - define ("LOCAL_PATH_BASE", LOCAL_PATH_ROOT. RELATIVE_PATH_BASE); define ("LOCAL_PATH_APP", LOCAL_PATH_ROOT. RELATIVE_PATH_APP); define ("LOCAL_PATH_LIBRARY", LOCAL_PATH_ROOT. RELATIVE_PATH_LIBRARY); define ("LOCAL_PATH_HELPERS", LOCAL_PATH_ROOT. RELATIVE_PATH_HELPERS); define ("LOCAL_PATH_TEMPLATE", LOCAL_PATH_ROOT. RELATIVE_PATH_TEMPLATE); define ("LOCAL_PATH_CONFIG", LOCAL_PATH_ROOT. RELATIVE_PATH_CONFIG); define ("LOCAL_PATH_PAGES", LOCAL_PATH_ROOT. RELATIVE_PATH_PAGES); define ("LOCAL_PATH_ASSET", LOCAL_PATH_ROOT. RELATIVE_PATH_ASSET); define ("LOCAL_PATH_ASSET_IMG", LOCAL_PATH_ROOT. RELATIVE_PATH_ASSET_IMG); define ("LOCAL_PATH_ASSET_CSS", LOCAL_PATH_ROOT. RELATIVE_PATH_ASSET_CSS); define ("LOCAL_PATH_ASSET_JS", LOCAL_PATH_ROOT. RELATIVE_PATH_ASSET_JS); // ------------------------------------------------ ----------------------- // DEFINIR LOS CAMINOS DE URL // -------------------- -------------------------------------------------- - si (US === DS) {// necesario para la compatibilidad con Windows define ("HTTP_PATH_BASE", HTTP_PATH_ROOT. RELATIVE_PATH_BASE); define ("HTTP_PATH_APP", HTTP_PATH_ROOT. RELATIVE_PATH_APP); define ("HTTP_PATH_LIBRARY", falso); define ("HTTP_PATH_HELPERS", falso); define ("HTTP_PATH_TEMPLATE", falso); define ("HTTP_PATH_CONFIG", falso); define ("HTTP_PATH_PAGES", falso); define ("HTTP_PATH_ASSET", HTTP_PATH_ROOT. RELATIVE_PATH_ASSET); define ("HTTP_PATH_ASSET_IMG", HTTP_PATH_ROOT. RELATIVE_PATH_ASSET_IMG); define ("HTTP_PATH_ASSET_CSS", HTTP_PATH_ROOT. RELATIVE_PATH_ASSET_CSS); define ("HTTP_PATH_ASSET_JS", HTTP_PATH_ROOT. RELATIVE_PATH_ASSET_JS); } else {define ("HTTP_PATH_BASE", HTTP_PATH_ROOT. str_replace (DS, US, RELATIVE_PATH_BASE)); define ("HTTP_PATH_APP", HTTP_PATH_ROOT. str_replace (DS, US, RELATIVE_PATH_APP)); define ("HTTP_PATH_LIBRARY", falso); define ("HTTP_PATH_HELPERS", falso); define ("HTTP_PATH_TEMPLATE", falso); define ("HTTP_PATH_CONFIG", falso); define ("HTTP_PATH_PAGES", falso); define ("HTTP_PATH_ASSET", HTTP_PATH_ROOT. str_replace (DS, US, RELATIVE_PATH_ASSET)); define ("HTTP_PATH_ASSET_IMG", HTTP_PATH_ROOT. str_replace (DS, US, RELATIVE_PATH_ASSET_IMG)); define ("HTTP_PATH_ASSET_CSS", HTTP_PATH_ROOT. str_replace (DS, US, RELATIVE_PATH_ASSET_CSS)); define ("HTTP_PATH_ASSET_JS", HTTP_PATH_ROOT. str_replace (DS, US, RELATIVE_PATH_ASSET_JS)); } // ----------------------------------------------- ------------------------ // DEFINIR LOS PARÁMETROS DE SOLICITUD // ------------------- -------------------------------------------------- - define ("REQUEST_QUERY", isset ($ _ SERVER ["QUERY_STRING"]) && $ _SERVER ["QUERY_STRING"]! = & # 39; & # 39 ;? $ _SERVER ["QUERY_STRING"]: false); define ("REQUEST_METHOD", isset ($ _ SERVER ["REQUEST_METHOD"])? strtoupper ($ _ SERVER ["REQUEST_METHOD"]): false); define ("REQUEST_STATUS", isset ($ _ SERVER ["REDIRECT_STATUS"])? $ _SERVER ["REDIRECT_STATUS"]: false); define ("REQUEST_PROTOCOL", isset ($ _ SERVER ["HTTP_ORIGIN"])? substr ($ _ SERVER ["HTTP_ORIGIN"] 0, strpos ($ _ SERVER ["HTTP_ORIGIN"] & # 39 ;: // & # 39;) + 3): & # 39; http: // & # 39;); define ("REQUEST_PATH", isset ($ _ SERVER ["REQUEST_URI"])? str_replace (RELATIVE_PATH_BASE, & # 39; & # 39 ;, $ _SERVER ["REQUEST_URI"]): & # 39; _UNKNOWN _ & # 39;); define ("REQUEST_PATH_STRIP_QUERY", REQUEST_QUERY? str_replace (& # 39;? & # 39 ;. REQUEST_QUERY, & # 39; & # 39 ;, REQUEST_PATH): REQUEST_PATH); // ------------------------------------------------ ----------------------- // DEFINIR PARÁMETROS DEL SITIO // -------------------- -------------------------------------------------- - definir ("PRODUCCION", falso); define ("PAGE_PATH_DEFAULT", EE. UU. & # 39; index & # 39;); define ("PAGE_PATH", (REQUEST_PATH_STRIP_QUERY === US)? PAGE_PATH_DEFAULT: REQUEST_PATH_STRIP_QUERY);  

Si agrega el código anterior a su propio proyecto, la salida de todas las constantes de usuario en este punto (lo que se puede hacer con get_defined_constants (true) debería dar un resultado como este: [19659007] matriz (& # 39; LOCAL_PATH_BOOTSTRAP & # 39; => & # 39; / var / www /raries / backend / Data / examples & # 39 ;, & # 39; URL_SEPARATOR & # 39; => & # 39; / & # 39 ;, & # 39; DS & # 39; => & # 39; / & # 39 ;, & # 39; PS & # 39; => & # 39 ;, & # 39 ;, & # 39; EE. UU. & # 39 ; => & # 39; / & # 39 ;, & # 39; RELATIVE_PATH_ROOT & # 39; => & # 39; & # 39 ;, & # 39; LOCAL_PATH_ROOT & # 39; => & # 39; / var / www & # 39;, & # 39; HTTP_PATH_ROP & # 39; => & # 39; localhost: 8888 & # 39 ;, & # 39; RELATIVE_PATH_BASE & # 39; => & # 39; / library / backend / Data / examples & # 39; , & # 39; RELATIVE_PATH_APP & # 39; => & # 39; / library / backend / Data & # 39;, & # 39; RELATIVE_PATH_LIBRARY & # 39; => & # 39; /raries / backend / Data / vendor & # 39;, & # 39; RELATIVE_PATH_HELPERS & # 39; => & # 39; /raries / backend / Data / examples & # 39;, & # 39; RELATIVE_PATH_TEMPLATE & # 39; => & # 39; /raries / backe nd / Data / examples / templates & # 39; y & # 39; RELATIVE_PATH_CONFIG & # 39; => & # 39; / library / backend / Data / examples / config & # 39; y & # 39; RELATIVE_PATH_PAGES & # 39; => & # 39; / library / backend / Data / examples / pages & # 39 ;, & # 39; RELATIVE_PATH_ASSET & # 39; => & # 39; / library / backend / Data / examples / asset & # 39;, & # 39; RELATIVE_PATH_ASSET_IMG & # 39; => & # 39; / library / backend / Data / examples / asset / img & # 39; y & # 39; RELATIVE_PATH_ASSET_CSS & # 39; => & # 39; / library / backend / Data / examples / asset / css & # 39;, & # 39; RELATIVE_PATH_ASSET_JS & # 39; => & # 39; / library / backend / Data / examples / asset / js & # 39; y & # 39; LOCAL_PATH_BASE & # 39; => & # 39; / var / www /raries / backend / Data / examples & # 39 ;, & # 39; LOCAL_PATH_APP & # 39; => & # 39; / var / www /raries / backend / Data & # 39 ;, & # 39; LOCAL_PATH_LIBRARY & # 39; => & # 39; / var / www /raries / backend / Data / vendor & # 39 ;, & # 39; LOCAL_PATH_HELPERS & # 39; => & # 39; / var / www /raries / backend / Data / examples & # 39;, & # 39; LOCAL_PATH_TEMPLATE & # 39; => & # 39; / var / www /raries / backend / Data / examples / templates & # 39 ;, & # 39; LOCAL_PATH_CONFIG & # 39; => & # 39; / var / www /raries / backend / Data / examples / config & # 39;, & # 39; LOCAL_PATH_PAGES & # 39; => & # 39; / var / www /raries / backend / Data / examples / pages & # 39; y & # 39; LOCAL_PATH_ASSET & # 39; => & # 39; / var / www /raries / backend / Data / examples / asset & # 39;, & # 39; LOCAL_PATH_ASSET_IMG & # 39; => & # 39; / var / www /raries / backend / Data / examples / asset / img & # 39;, & # 39; LOCAL_PATH_ASSET_CSS & # 39; => & # 39; / var / w ww /raries / backend / Data / examples / asset / css & # 39;, & # 39; LOCAL_PATH_ASSET_JS & # 39; => & # 39; / var / www /raries / backend / Data / examples / asset / js & # 39;, & # 39; HTTP_PATH_BASE & # 39; => & # 39; localhost: 8888 /raries / backend / Data / examples & # 39 ;, & # 39; HTTP_PATH_APP & # 39; => & # 39; localhost: 8888 /raries / backend / Data & # 39 ;, & # 39; HTTP_PATH_LIBRARY & # 39; => falso, & # 39; HTTP_PATH_HELPERS & # 39; => falso, & # 39; HTTP_PATH_TEMPLATE & # 39; => falso, & # 39; HTTP_PATH_CONFIG & # 39; => falso, & # 39; HTTP_PATH_PAGES & # 39; => falso, & # 39; HTTP_PATH_ASSET & # 39; => & # 39; localhost: 8888 / library / backend / Data / examples / asset & # 39;, & # 39; HTTP_PATH_ASSET_IMG & # 39; => & # 39; localhost: 8888 /raries / backend / Data / examples / asset / img & # 39;, & # 39; HTTP_PATH_ASSET_CSS & # 39; => & # 39; localhost: 8888 / library / backend / Data / examples / asset / css & # 39 ;, & # 39; HTTP_PATH_ASSET_JS & # 39; => & # 39; localhost: 8888 / library / backend / Data / examples / asset / js & # 39 ;, & # 39; REQUEST_QUERY & # 39; => falso, & # 39; REQUEST_METHOD & # 39; => & # 39; GET & # 39 ;, & # 39; REQUEST_STATUS & # 39; => falso, & # 39; REQUEST_PROTOCOL & # 39; => & # 39; http: // & # 39 ;, & # 39; REQUEST_PATH & # 39; => & # 39; / & # 39 ;, & # 39; REQUEST_PATH_STRIP_QUERY & # 39; => & # 39; / & # 39;, & # 39; PRODUCCIÓN & # 39; => falso, & # 39; PAGE_PATH_DEFAULT & # 39; => & # 39; / index & # 39;, & # 39; PAGE_PATH & # 39; => & # 39; / index & # 39 ;,) [19659044]


READ MORE – CLICK HERE

www.Down.co.ve


No comments:

Post a Comment

Como crear tarjetas Virtuales Visa o MasterCard con tu divisa y las ventajas que ofrecen

Hoy día, gracias al creciente mundo del Internet se le ha permitido a cada persona poder acceder a muchos productos o servicios. Y en estos ...