usar ruta require_once otra incluir funciona fichero ejemplos ejemplo desde como carpeta php relative-path absolute-path

require_once - Ruta absoluta de PHP a la raíz



require_once php ejemplo (7)

Cree una constante con la ruta absoluta a la raíz utilizando la función define en ShowInfo.php :

define(''ROOTPATH'', __DIR__);

O PHP <= 5.3

define(''ROOTPATH'', dirname(__FILE__));

Ahora úsalo:

if (file_exists(ROOTPATH.''/Texts/MyInfo.txt'') { // ... }

O use el DOCUMENT_ROOT definido en $_SERVER :

if (file_exists($_SERVER[''DOCUMENT_ROOT''].''/Texts/MyInfo.txt'') { // ... }

No puedo creer que PHP no tenga una solución fácil para este simple asunto. ASP.NET tiene un signo ~ que se preocupa de este problema y comienza todo desde el nivel raíz. Aquí está mi problema:

localhost/MySite -->Admin -- Edit.php -->Class -- class.EditInfo.php -->Texts -- MyInfo.txt --ShowInfo.php

Inside class.EditInfo.php Estoy accediendo a MyInfo.txt, así que definí una ruta relativa "../Texts/MyInfo.txt". Luego creé un objeto de EditInfo en Admin / Edit.php y accedí a Texts / MyInfo.txt funcionó bien.

Pero ahora tengo que crear un objeto de EditInfo en ShowInfo.php y acceder a Texts / MyInfo.txt y aquí está el problema. Como estoy usando una ruta relativa en mi clase cada vez que estoy creando un objEditInfo y tratando de acceder a MyInfo.txt obtengo el error "El archivo no existe".

Ahora estoy buscando algo que sea equivalente a "~ / Texts / MyInfo.txt" de ASP.NET. ¿Hay algo similar a eso por ahí? ¿O tengo que establecer la ruta con alguna condición if / else?

ACTUALIZAR:

Usé $ _SERVER [''DOCUMENT_ROOT'']. Estaba usando una subcarpeta donde estaba mi sitio web real. Así que tuve que usar $ _SERVER [''DOCUMENT_ROOT'']. "/ MySite" y luego agregar el resto de la dirección ("/Texts/MyInfo.php") a ella.


En PHP hay una variable global que contiene varios detalles relacionados con el servidor. Se llama $ _SERVER. Contiene también la raíz:

$_SERVER[''DOCUMENT_ROOT'']

El único problema es que las entradas en esta variable son proporcionadas por el servidor web y no hay garantía de que todos los servidores web las ofrezcan.


La mejor manera de Usar dirname (). Porque SERVER [''DOCUMENT_ROOT''] no está trabajando en todos los servidores, y también devuelve la ruta de ejecución del servidor.

$root = dirname( __FILE__ ); $root = __DIR__; $filePath = realpath(dirname(__FILE__)); $rootPath = realpath($_SERVER[''DOCUMENT_ROOT'']); $htmlPath = str_replace($root, '''', $filePath);


La mejor manera de hacerlo, dada su configuración, es definir una constante que describa la ruta raíz de su sitio. Puede crear un archivo config.php en la raíz de su aplicación:

<?php define(''SITE_ROOT'', dirname(__FILE__)); $file_path = SITE_ROOT . ''/Texts/MyInfo.txt''; ?>

Luego incluya config.php en cada script de punto de entrada y SITE_ROOT referencia a SITE_ROOT en su código en lugar de dar una ruta relativa.


Puede acceder a la variable $_SERVER[''DOCUMENT_ROOT''] :

<?php $path = $_SERVER[''DOCUMENT_ROOT'']; $path .= "/subdir1/yourdocument.txt"; ?>


Siempre es mejor comenzar cualquier proyecto personalizado de PHP con un archivo bootstrap donde se definen las rutas más comúnmente usadas como constantes, en base a los valores extraídos de $_SERVER . Debería hacer que la migración de sus proyectos o partes de su proyecto a otro servidor o a otro directorio en el servidor sea mucho más fácil.

Así es como defino mis rutas de acceso a la 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"] : ''_UNKNOWN_''));

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 punto, la conversión de cualquier ruta local a una ruta HTTP se puede hacer 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, deberá reemplazar el separador de directorio con un separador de URL también:

str_replace(LOCAL_PATH_ROOT, RELATIVE_PATH_ROOT, str_replace(DIRECTORY_SEPARATOR, ''/'', $my_path))

Aquí está el código de arranque completo que estoy usando para el texto repetitivo de PHP PowerTools :

defined(''LOCAL_PATH_BOOTSTRAP'') || define("LOCAL_PATH_BOOTSTRAP", __DIR__); // ----------------------------------------------------------------------- // DEFINE SEPERATOR ALIASES // ----------------------------------------------------------------------- define("URL_SEPARATOR", ''/''); define("DS", DIRECTORY_SEPARATOR); define("PS", PATH_SEPARATOR); define("US", URL_SEPARATOR); // ----------------------------------------------------------------------- // DEFINE ROOT PATHS // ----------------------------------------------------------------------- define("RELATIVE_PATH_ROOT", ''''); 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"] : ''_UNKNOWN_'')); // ----------------------------------------------------------------------- // DEFINE RELATIVE PATHS // ----------------------------------------------------------------------- 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 . ''vendor''); define("RELATIVE_PATH_HELPERS", RELATIVE_PATH_BASE); define("RELATIVE_PATH_TEMPLATE", RELATIVE_PATH_BASE . DS . ''templates''); define("RELATIVE_PATH_CONFIG", RELATIVE_PATH_BASE . DS . ''config''); define("RELATIVE_PATH_PAGES", RELATIVE_PATH_BASE . DS . ''pages''); define("RELATIVE_PATH_ASSET", RELATIVE_PATH_BASE . DS . ''assets''); define("RELATIVE_PATH_ASSET_IMG", RELATIVE_PATH_ASSET . DS . ''img''); define("RELATIVE_PATH_ASSET_CSS", RELATIVE_PATH_ASSET . DS . ''css''); define("RELATIVE_PATH_ASSET_JS", RELATIVE_PATH_ASSET . DS . ''js''); // ----------------------------------------------------------------------- // DEFINE LOCAL PATHS // ----------------------------------------------------------------------- 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); // ----------------------------------------------------------------------- // DEFINE URL PATHS // ----------------------------------------------------------------------- if (US === DS) { // needed for compatibility with 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", false); define("HTTP_PATH_HELPERS", false); define("HTTP_PATH_TEMPLATE", false); define("HTTP_PATH_CONFIG", false); define("HTTP_PATH_PAGES", false); 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", false); define("HTTP_PATH_HELPERS", false); define("HTTP_PATH_TEMPLATE", false); define("HTTP_PATH_CONFIG", false); define("HTTP_PATH_PAGES", false); 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)); } // ----------------------------------------------------------------------- // DEFINE REQUEST PARAMETERS // ----------------------------------------------------------------------- define("REQUEST_QUERY", isset($_SERVER["QUERY_STRING"]) && $_SERVER["QUERY_STRING"] != '''' ? $_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"], ''://'') + 3) : ''http://''); define("REQUEST_PATH", isset($_SERVER["REQUEST_URI"]) ? str_replace(RELATIVE_PATH_BASE, '''', $_SERVER["REQUEST_URI"]) : ''_UNKNOWN_''); define("REQUEST_PATH_STRIP_QUERY", REQUEST_QUERY ? str_replace(''?'' . REQUEST_QUERY, '''', REQUEST_PATH) : REQUEST_PATH); // ----------------------------------------------------------------------- // DEFINE SITE PARAMETERS // ----------------------------------------------------------------------- define("PRODUCTION", false); define("PAGE_PATH_DEFAULT", US . ''index''); 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 (que puede hacer con get_defined_constants(true) debería dar un resultado similar al siguiente:

array ( ''LOCAL_PATH_BOOTSTRAP'' => ''/var/www/libraries/backend/Data/examples'', ''URL_SEPARATOR'' => ''/'', ''DS'' => ''/'', ''PS'' => '':'', ''US'' => ''/'', ''RELATIVE_PATH_ROOT'' => '''', ''LOCAL_PATH_ROOT'' => ''/var/www'', ''HTTP_PATH_ROOT'' => ''localhost:8888'', ''RELATIVE_PATH_BASE'' => ''/libraries/backend/Data/examples'', ''RELATIVE_PATH_APP'' => ''/libraries/backend/Data'', ''RELATIVE_PATH_LIBRARY'' => ''/libraries/backend/Data/vendor'', ''RELATIVE_PATH_HELPERS'' => ''/libraries/backend/Data/examples'', ''RELATIVE_PATH_TEMPLATE'' => ''/libraries/backend/Data/examples/templates'', ''RELATIVE_PATH_CONFIG'' => ''/libraries/backend/Data/examples/config'', ''RELATIVE_PATH_PAGES'' => ''/libraries/backend/Data/examples/pages'', ''RELATIVE_PATH_ASSET'' => ''/libraries/backend/Data/examples/assets'', ''RELATIVE_PATH_ASSET_IMG'' => ''/libraries/backend/Data/examples/assets/img'', ''RELATIVE_PATH_ASSET_CSS'' => ''/libraries/backend/Data/examples/assets/css'', ''RELATIVE_PATH_ASSET_JS'' => ''/libraries/backend/Data/examples/assets/js'', ''LOCAL_PATH_BASE'' => ''/var/www/libraries/backend/Data/examples'', ''LOCAL_PATH_APP'' => ''/var/www/libraries/backend/Data'', ''LOCAL_PATH_LIBRARY'' => ''/var/www/libraries/backend/Data/vendor'', ''LOCAL_PATH_HELPERS'' => ''/var/www/libraries/backend/Data/examples'', ''LOCAL_PATH_TEMPLATE'' => ''/var/www/libraries/backend/Data/examples/templates'', ''LOCAL_PATH_CONFIG'' => ''/var/www/libraries/backend/Data/examples/config'', ''LOCAL_PATH_PAGES'' => ''/var/www/libraries/backend/Data/examples/pages'', ''LOCAL_PATH_ASSET'' => ''/var/www/libraries/backend/Data/examples/assets'', ''LOCAL_PATH_ASSET_IMG'' => ''/var/www/libraries/backend/Data/examples/assets/img'', ''LOCAL_PATH_ASSET_CSS'' => ''/var/www/libraries/backend/Data/examples/assets/css'', ''LOCAL_PATH_ASSET_JS'' => ''/var/www/libraries/backend/Data/examples/assets/js'', ''HTTP_PATH_BASE'' => ''localhost:8888/libraries/backend/Data/examples'', ''HTTP_PATH_APP'' => ''localhost:8888/libraries/backend/Data'', ''HTTP_PATH_LIBRARY'' => false, ''HTTP_PATH_HELPERS'' => false, ''HTTP_PATH_TEMPLATE'' => false, ''HTTP_PATH_CONFIG'' => false, ''HTTP_PATH_PAGES'' => false, ''HTTP_PATH_ASSET'' => ''localhost:8888/libraries/backend/Data/examples/assets'', ''HTTP_PATH_ASSET_IMG'' => ''localhost:8888/libraries/backend/Data/examples/assets/img'', ''HTTP_PATH_ASSET_CSS'' => ''localhost:8888/libraries/backend/Data/examples/assets/css'', ''HTTP_PATH_ASSET_JS'' => ''localhost:8888/libraries/backend/Data/examples/assets/js'', ''REQUEST_QUERY'' => false, ''REQUEST_METHOD'' => ''GET'', ''REQUEST_STATUS'' => false, ''REQUEST_PROTOCOL'' => ''http://'', ''REQUEST_PATH'' => ''/'', ''REQUEST_PATH_STRIP_QUERY'' => ''/'', ''PRODUCTION'' => false, ''PAGE_PATH_DEFAULT'' => ''/index'', ''PAGE_PATH'' => ''/index'', )


use dirname(__FILE__) en un archivo de configuración global.