parameter generate create php web-applications

php - generate - yii2 get url parameter



¿Cómo puedo encontrar la URL base de una aplicación? (11)

A menos que rastree esto usted mismo, no creo que esto tenga una definición. O más bien, le estás pidiendo a PHP que rastree algo que de alguna manera estás definiendo arbitrariamente.

En resumidas cuentas, si entiendo tu pregunta correctamente, no creo que exista lo que estás pidiendo, al menos no como PHP "central"; un marco dado puede proporcionar una URL "raíz" relativa a una estructura de directorios que comprenda.

¿Tiene sentido?

Me gustaría encontrar la url base de mi aplicación, por lo que puedo hacer referencia automáticamente a otros archivos en el árbol de mi aplicación ...

Entonces, dado un archivo config.php en la base de mi aplicación, si un archivo en un subdirectorio lo incluye, sabe con qué prefijar una url.

application/config.php application/admin/something.php application/css/style.css

Por lo tanto, dado que se accede a http://www.example.com/application/admin/something.php , quiero que sepa que el archivo css está en $approot/css/style.css . En este caso, $approot es " /application ", pero me gustaría saber si la aplicación está instalada en otro lugar.

No estoy seguro si es posible, muchas aplicaciones (phpMyAdmin, Squirrelmail, creo) tienen que establecer una variable de configuración para comenzar. Sería más fácil de usar si lo supiera.


El REQUEST_URI combinado con dirname () puede indicarle su directorio actual, relevante para la ruta de la URL:

<?php echo dirname($_SERVER["REQUEST_URI"]); ?>

Entonces http://example.com/test/test.php imprime "/ test" o http://example.com/ prints "/" que puede usar para generar enlaces para referirse a otras páginas relativas a la ruta actual.

EDITAR : acaba de darse cuenta al volver a leer que podría estar preguntando sobre la ruta en disco en lugar de la ruta de la URL. En ese caso, quiere la función getcwd () de PHP en su lugar:

<?php echo getcwd(); ?>


Pon esto en tu config.php (que está en el directorio raíz de tu aplicación):

$approot = substr(dirname(__FILE__),strlen($_SERVER[''DOCUMENT_ROOT'']));

Creo que eso lo hará.


Esto funciona como un encanto para mí, en cualquier lugar que implemente, con o sin reglas de reescritura:

$ baseDir = ''http: //''.$_SERVER ['' HTTP_HOST '']. (dirname ($ _SERVER ['' SCRIPT_NAME ''])!! ='' / ''? dirname ($ _ SERVER ["SCRIPT_NAME"])'' / '': ''/'');


Nunca he encontrado una manera de hacerlo.

Siempre termino estableciendo una variable de configuración con la ruta del servidor a un nivel superior a la raíz web. Entonces es:

  • $ configVar. ''public / whatever /'' para cosas dentro de root,
  • pero también puedes incluir desde afuera con $ configVar. ''phpInc / db.inc.php /'' etc.

Si desea la ruta en el sistema de archivos, puede usar $_SERVER[''DOCUMENT_ROOT'']
Si solo desea la ruta del archivo que aparece en la URL después del dominio, use $_SERVER[''REQUEST_URI'']


Una solución sería usar rutas relativas para todo, de esa forma no importa dónde esté instalada la aplicación. Por ejemplo, para acceder a su hoja de estilos, use esto:

../css/style.css


Uso lo siguiente en un framework homebrew ... Ponlo en un archivo en la carpeta raíz de tu aplicación y simplemente inclúyelo.

define(''ABSPATH'', str_replace(''//', ''/'', dirname(__FILE__)) . ''/''); $tempPath1 = explode(''/'', str_replace(''//', ''/'', dirname($_SERVER[''SCRIPT_FILENAME'']))); $tempPath2 = explode(''/'', substr(ABSPATH, 0, -1)); $tempPath3 = explode(''/'', str_replace(''//', ''/'', dirname($_SERVER[''PHP_SELF'']))); for ($i = count($tempPath2); $i < count($tempPath1); $i++) array_pop ($tempPath3); $urladdr = $_SERVER[''HTTP_HOST''] . implode(''/'', $tempPath3); if ($urladdr{strlen($urladdr) - 1}== ''/'') define(''URLADDR'', ''http://'' . $urladdr); else define(''URLADDR'', ''http://'' . $urladdr . ''/''); unset($tempPath1, $tempPath2, $tempPath3, $urladdr);

El código anterior define dos constantes. ABSPATH contiene la ruta absoluta a la raíz de la aplicación (sistema de archivos local) mientras que URLADDR contiene la URL completa de la aplicación. Funciona en situaciones mod_rewrite.


la raíz de la aplicación se puede encontrar por

$protocol = (strstr(''https'',$_SERVER[''SERVER_PROTOCOL'']) === false)?''http'':''https''; $url = $protocol.''://''.$_SERVER[''SERVER_NAME''].dirname($_SERVER[''REQUEST_URI'']);

este código devolverá la ruta url de cualquier aplicación ya sea en línea o en un servidor fuera de línea.

No hice la verificación adecuada para el ''/'' correcto. Por favor modifíquelo para barras.

este archivo debe colocarse en la raíz.

ejemplo: si la URL de la aplicación:

http://localhost/test/test/test.php

entonces este código regresará

http://localhost/test/test

Gracias


Puede encontrar la url base con el siguiente código:

define(''SITE_BASE_PATH'',''http://''.preg_replace(''/[^a-zA-Z0-9]/i'','''',$_SERVER[''HTTP_HOST'']).''/''.str_replace(''//',''/'',substr(dirname(__FILE__),strlen($_SERVER[''DOCUMENT_ROOT'']))).''/'');

Corto y mejor.


Esto es lo que he usado en mi aplicación que funciona bien, también uso un puerto personalizado, así que tuve que permitir esto también.

define(''DOC_URL'', ($_SERVER[''HTTPS'']==''on''?''https'':''http'').''://''.$_SERVER[''SERVER_NAME''].(!in_array($_SERVER[''SERVER_PORT''], array(80,443))?'':''.$_SERVER[''SERVER_PORT'']:'''')).dirname($_SERVER[''REQUEST_URI'']);

Luego lo uso escribiendo lo siguiente ...

<img src="<?php echo DOC_URL; ?>/_img/logo.png" />