2012-03-15 22 views
5

Estoy usando una herramienta de autorización prefabricada para proteger mi sitio. La herramienta requiere que esta línea de código se aplique a la parte superior de cada página .php. Auth.php vive en el nivel raíz.Ruta absoluta PHP en requireonce

<?php ${(require_once('Auth.php'))}->protectme(); ?> 

Necesito poder agregar esta línea de código a cada archivo, incluidos los archivos en las subcarpetas. Pero no estoy seguro de cómo aplicar el método como se muestra en require_once in php para asegurar que siempre esté vinculado absolutamente, junto con protectme ​​(); función.

Se agradece cualquier aclaración.

Saludos.

+0

¿Cuál es el propósito de esta función? – yoda

Respuesta

6

Establezca una variable en la ruta absoluta. $ _SERVER ['DOCUMENT_ROOT'] es una variable global de PHP que almacena los servidores, ruta raíz. Solo necesita insertar el resto de la información de ruta en el script. Por ejemplo, si su sitio web existe en/var/www/y su script existe en/var/www/scripts, usted haría lo siguiente.

$path = $_SERVER['DOCUMENT_ROOT'] . '/scripts/Auth.php'; 
require_once($path); 
2

Puede usar una ruta relativa para acceder a ella.

un nivel más arriba: ../Auth.php

dos niveles arriba: ../../Auth.php

etc.

+0

La sugerencia es buena, pero eso no siempre funciona. Funciona en combinación con ['__DIR__'] (http://www.php.net/manual/en/language.constants.predefined.php). – hakre

+0

Hola. Gracias, pero va a tomar mucho tiempo ordenarlos individualmente. – fitzilla

+0

@fitzilla, en ese caso, debe seguir las soluciones de Hakre o DampeS8N. Son buenas respuestas a tu problema. Solo recuerde que está realizando un cambio de INI, que tendrá que cambiar en cualquier otro lugar donde se implemente su código. – Brad

1

Añadir el directorio raíz de su include_path - PHP hará el resto para usted. Sin variables complicadas, constantes o lo que sea.

2

Debe modificar su php.ini para cambiar la ruta de inclusión a la ruta de acceso a ese (todos los demás) archivos incluidos. Luego puede incluirlos sin una ruta en cada página, independientemente de su ubicación.

More Details

-1

Por qué no utilizar una ruta absoluta?

require('/auth.php'); 

Tal vez estoy malentendido su pregunta

+0

porque no funcionará –

0

Si usted no tiene acceso a php.ini, que he usado algo como esto antes

include $_SERVER['DOCUMENT_ROOT']."/"."include_me.php"; 
1

Además de todo lo que ya se ha dicho, sugiero que se centralicen todas las funciones comunes. Cree un archivo, como common.php con todo lo que necesita para su aplicación y luego incluya eso de todos sus scripts.

Además, una buena forma de hacer relativas incluye es mediante el uso de la función dirname() en combinación con la constante mágica __FILE__. Por ejemplo:

require_once dirname(__FILE__) . '/../lib/common.php'; 
Cuestiones relacionadas