2009-12-11 14 views
5

La estructura para el proyecto en el que estoy trabajando es algo así como:PHP incluye dentro de un (directorio diferente) incluyen

  • root/index.php
  • raíz/includes/php/first.php
  • raíz/includes/php/functions.php

Así index.php incluye first.php:

<?php include_once("includes/php/first.php"); ?> 
Normalmente

entonces mi first.php llamarían funciones como:

<?php include_once("includes/php/functions.php"); ?> 

Suponiendo que la relación seguiría siendo de la página de índice sin embargo al pasar a un nuevo servidor que no funcionó. Intenté hacer la ruta relativa desde first.php:

include_once("functions.php"); 

Y esto parece funcionar ahora.

¿Cuál sería normalmente la forma correcta de hacerlo? Quiero lanzar este proyecto para que cualquiera pueda instalarlo.

Respuesta

11

incluye son relativas al archivo que lo incluye. Si realmente quiere asegurarse y evitar cualquier ambigüedad, se puede hacer esto:

include dirname(__FILE__) . "/functions.php"; 
+0

Awesome thanks! No estoy seguro de por qué funcionó antes de la otra manera pero esta solución resolverá problemas futuros – kilrizzy

+0

+1 - Iba a sugerir usar el elemento '$ _SERVER ['SCRIPT_FILENAME']' para hacer lo mismo, pero esto es mucho mejor. – Atli

+2

Tiendo a crear un par de definiciones para mi aplicación PHP y almacenar mi ruta raíz y ruta web allí para usar en – Andrew

0

siempre uso:

include ($_SERVER['DOCUMENT_ROOT']."/include/php/functions.php"); 

esta manera usted sabe siempre donde está (que viene de la raíz) y tu código puede ser copiado de un lugar a otro.

Cuestiones relacionadas