Foros del Web » Programando para Internet » PHP »

Include en PHP 4.2.3

Estas en el tema de Include en PHP 4.2.3 en el foro de PHP en Foros del Web. Saludos. Señores, en PHP 4.2.3 hay que modificar algo en el php.ini para que funcionen los include ??? Estoy colocando la ruta fisica y me ...
  #1 (permalink)  
Antiguo 26/11/2002, 15:10
Avatar de joseisrael  
Fecha de Ingreso: noviembre-2002
Ubicación: Maracay, Edo. Aragua
Mensajes: 221
Antigüedad: 15 años
Puntos: 1
Pregunta Include en PHP 4.2.3

Saludos.

Señores, en PHP 4.2.3 hay que modificar algo en el php.ini para que funcionen los include ???

Estoy colocando la ruta fisica y me da error. Busque dicha ruta en el phpinfo()....pero al utilizarla en el Include me da el siguiente error:

'/Inetpub/wwwroot/webnew/local/include/fecha.html' (include_path='.;c:\php4\pear') in C:\Inetpub\wwwroot\webnew\admin\footer.php on line 6'

Qué podrá ser?

Gracias
  #2 (permalink)  
Antiguo 26/11/2002, 16:46
Avatar de kawoq  
Fecha de Ingreso: mayo-2002
Ubicación: Xela
Mensajes: 491
Antigüedad: 15 años, 6 meses
Puntos: 0
Yo te aconsejaría, que manejes, las direcciones de tus archivos, según las vayas a llamar en tu website, por ejemplo yo en una página de mi sitio, tengo un include para llamar a mi menú, el cual lo hize con una extensión .dat, y este menú lo coloce en la misma carpeta en la que tengo mi página en la que yo quería que saliera
y lo llamo de la siguiente forma

Código PHP:
<? //importante incluir esta etiqueta
   
include("menu.dat"); //recuerda siempre que utilizes un include poner las etiquetas de incio y fin de sentencias en php. 
?>//importante incluir esta etiqueta
aún si tu archivo estuviera en otra dirección u otra carpeta, tendría que funcionar.


Código PHP:
<?
   
include("carpetax/archivoaincluir.dat"); 
?>
Suerte, y espero que te halla ayudado en algo.
  #3 (permalink)  
Antiguo 26/11/2002, 17:37
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Te faltó indicar la linea 6 que codigo usas para llamar a tu include() ...

Ese error es el típico error de querer acceder a una parte del servidor a la que no estas autorizado (sobre todo si trabajas en PHP como CGI .. mas restricciones tienes todavia).

Un fallo tipico suele ser:
include("/misitio/algo.php");

Esa referencia por /misitio .. la estarias haciendo sobre el Raiz de ese servidor .. y no sobre el raiz "virtual" de tu sitio adjudicado ..

Usa lo que te han recomendado ..

Un saludo,
  #4 (permalink)  
Antiguo 27/11/2002, 05:26
Avatar de joseisrael  
Fecha de Ingreso: noviembre-2002
Ubicación: Maracay, Edo. Aragua
Mensajes: 221
Antigüedad: 15 años
Puntos: 1
Exclamación El Virtual es el que estoy llamando.

Saludos.

Ok Cluster, tratare de explicar todo mejor.

En esa linea 6 lo que tengo es un simple require.

En una variable tengo la ruta VIRTUAL del archivo que estoy llamando.

$RUTA_VIRTUAL = "'/Inetpub/wwwroot/webnew/local/include";

y lo coloco:

require ($RUTA_VIRTUAL . "/fecha.html");

Efectivamente esa es la ruta local, ya que es un Server LOCAL. Un Server con el que siempre he trabajado.

La idea de esa variable $RUTA_VIRTUAL, es que no importa donde este navegando, en que carpeta o subcarpeta, el enlace siempre va al raiz virtual del archivo y lo imprime.

Por qué ahora, , de la noche a la mañana, ya no funciona, y tengo que crear archivos .dat y que se yo que más?

El ejemplo de kawoq efectivamente funciona:

<?
include("carpetax/archivoaincluir.dat");
?>

Pero que tal si tengo 10 carpetas cada una con 4 carpetas y 2 subcarpetas cada una??

Tengo que modificar el ("carpetax/archivoaincluir.dat") por

("caarpetaA-1/archivoaincluir.dat") ;
("carpetaA-1/A-2/archivoaincluir.dat");
("carpetaA-1/A-2/A-3/archivoaincluir.dat");

Dependiendo del nivle donde se encuentre el archivo que hace el llamado a "archivoaincluir.dat".

la idea es colocar:

($RUTA_VIRTUAL . "/archivoaincluir.dat");

Y me olvido en que nivel estoy trabajando.

No se si es que he entendido mal los mensajes, o estoy totalmente errado. Me disculpan de ser así.

Pero hay una incognita que sigue en el aire.......

POR QUÉ AYER FUNCIONABA Y HOY NO ??????

TIENE RELACIÓN DIRECTA CON LA NUEVA VERSIÓN DEL PHP ???

ES EL WIN2000 O EL IIS 5.0 ????

La verdad es una cosa que no se responder.

Gracias a todos los que se toman el tiempo de leerme y tratar de ayudarme.
  #5 (permalink)  
Antiguo 27/11/2002, 07:40
Avatar de joseisrael  
Fecha de Ingreso: noviembre-2002
Ubicación: Maracay, Edo. Aragua
Mensajes: 221
Antigüedad: 15 años
Puntos: 1
De acuerdo Solución !!!

Saludos.

Señores creo que encontre la solución. Por favor chequenla a ver si estoy cometiendo una imprudencia o si es viable mi solución.

El archivo pnp.ini tiene una variable llamada "include_path", a esta variable le agrrege el path virtual de todos los sitios configurados en el IIS.

EJ:

Sitio 1: path= /Inetpub/wwwroot/webnew/local/include
Sitio 2: path= /Inetpub/wwwroot/navidad/img

La manera de incluir cada uno de los path es:

"\path1;\path2"

o sea

include_path = "/Inetpub/wwwroot/webnew/local/include;/Inetpub/wwwroot/navidad/img"

Al momento de querer hacer un include o require dentro de cualquier documento PHP en cualquier carpeta en cualquier nivel, lo que se hace es imprimir esa varible "include_path", es decir:

require ($include_path . "nombredelarchivo.loquesea");

Y listo.

Espero no estar dañando nada en el archivo php.ini

Por favor si alguien tiene conocimientos sobre este asunto, posteenla, para no violentar la data que manejo.

Gracias a todos.
  #6 (permalink)  
Antiguo 27/11/2002, 10:40
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Muy drastica tu solución .. y lo peor de todo es que si migras tus aplicaciones a otro servidor deberas hacer la misma configuracion en tu php.ini del servidor q migres (y no siempre vas a poder tocarlo .. imagina un servicio de Hosting).

Con respecto al include referido a otro directorio .. puedes hacer llamadas tipo:

Código PHP:
include("./includes/algo.php"); 
date cuenta del . (punto) antes del primer / .. Yo así lo hago con una estructura de directorios tipo (partiendo del document root definido en mi servidort HTTP (en este caso Apache):

Document root/sitoweb1/includes/
Document root/sitoweb1/imagenes/
Document root/sitoweb1/cosas/
Document root/sitoweb1/index.tal

Document root/sitoweb2/includes
Document root/sitoweb2/imagenes
Document root/sitoweb2/cosas
Document root/sitoweb2/index.tal

Y haciendo llamadas desde el raiz del sitiowebX o desde los subdirectorios creados (en plataformas Linux y Windows). La directiva include_path la tengo desactivada con # ...

Un saludo,

Última edición por Cluster; 27/11/2002 a las 10:42
  #7 (permalink)  
Antiguo 27/11/2002, 13:01
Avatar de joseisrael  
Fecha de Ingreso: noviembre-2002
Ubicación: Maracay, Edo. Aragua
Mensajes: 221
Antigüedad: 15 años
Puntos: 1
Exclamación Pregunta

Saludos

Cluster, que pasa con:

include("./includes/algo.php");

si estoy dentro de 5 subniveles del site ???

que pasa con es PUNTO "." que esta delante de /includes ??

este es el archivo config.php que utilizo en todas mis páginas


------------------------------------------------------------
<?php

$global_vars = array(

//VARIABLES DE RUTAS

"IMG_URL" => "/greco/img",
"SITE_HOME" => "/webnew",
"SITE_ROOT" => "/Inetpub/wwwroot/webnew",

//TABLAS DE LA DB

"TBL_NAME_1" => "name1",
"TBL_NAME_2" => "name2",

//PATHS
"strCSS" => "/webnew/css",
"strImg" => "/webnew/img",

//COLORES
"FondoMenu" => "#CCDFE3",
"ColorMenu" => "#CCDFE3",

"ENDPOINT" => ""

);

while (list($key, $value) = each($global_vars)) {
define($key, $value);
}

?>
------------------------------------------------------------

es en "SITE_ROOT" donde ocurre el problema
  #8 (permalink)  
Antiguo 27/11/2002, 13:20
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Pues el punto .. si no me equivoco o confundo .. es el raiz y ../ es una rama arriba ...

Segun tu estructura deberia que te puse tomo una rama arriba y voy bajando ...

Si eso no te aclaras (q no me aclaro ni yo para explicarlo xDD) .. tambien tienes la variable de sistema $_SERVER['DOCUMET_ROOT'] .. o $DOCUMENT_ROOT que te da eso mismo ... pruebala.

Un saludo,
  #9 (permalink)  
Antiguo 27/11/2002, 16:31
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 6 meses
Puntos: 16
Hola,

./ es el directorio actual
../ es el directorio inmediatamente superior
/ es el directorio raiz

Si no comienza por ninguno de estos, por ejemplo, ejemplo/pag.php , busca en el path, en el que normalmente esta puesto el '.', es decir, el directorio actual.

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #10 (permalink)  
Antiguo 28/11/2002, 07:04
Avatar de joseisrael  
Fecha de Ingreso: noviembre-2002
Ubicación: Maracay, Edo. Aragua
Mensajes: 221
Antigüedad: 15 años
Puntos: 1
Exclamación Re-Aclarando

Saludos.

Amigos, gracias a todos por participar.

Efectivamente, la forma de trabajar con las carpetas o subcarpetas esta suficientemente clara......

La utilización de "." ; "../" y demás formas esta entendible.

Ahora tratare de explicarme un poco mejor , sobre la metodología utilizada.


En un include de la manera tradicional efectivamente hay que indicarle la ruta de donde se encuentra el archivo a incluir.

Ej:

include("./includes/algo.php");




Qué pasa si ese archivo "algo.php" lo cambio de carpeta (de includes a OTRA) ???

Tengo que modificar todos los documentos que contengan:

include("./includes/algo.php"); por:

include("./OTRA/algo.php");


CLAROS HASTA AQUÍ???


Con la metodología que yo utilizo sería así:

include($RUTA_VIRTUAL . "/algo.php");

Donde $RUTA_VIRTUAL podría ser algo así; "/Inetput/www/includes";

Al momento de mover ese archivo a otra carpeta, yo solamente modificaría la variable $RUTA_VIRTUAL , sin necesidad de modificar todos los documentos que contenían el include movido.

OJALA y me entiendan. No le veo sentido a trabajar utilizando códigos duros, que me obligaran a modificar un gran número de documentos, por un cambio tan simple como lo es mover una carpeta o alguna otra cosa.

Por favor, lean bien y haganse una idea de lo que trato de decirles.

Gracias
  #11 (permalink)  
Antiguo 28/11/2002, 15:08
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 6 meses
Puntos: 16
¿ Ya has probado a usar como te han comentado antes $DOCUMENT_ROOT, que en tu caso seria $_SERVER['DOCUMENT_ROOT'] ? Analiza el valor que te devuelve. Suele ser el path absoluto al directorio raiz del sitio. En tu caso no se como tienes configurado tus servidores virtuales.

Suerte.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #12 (permalink)  
Antiguo 03/12/2002, 07:21
Avatar de joseisrael  
Fecha de Ingreso: noviembre-2002
Ubicación: Maracay, Edo. Aragua
Mensajes: 221
Antigüedad: 15 años
Puntos: 1
Listo !!

Saludos.

Les comento que coloco lo siguiente:

<?
$RUTA = "RUTA:" . $_SERVER['DOCUMET_ROOT'];
echo $RUTA;
?>

y no me regresa ningun valor, $RUTA == "".

Cambie lo anterior por esto:

<?
$RUTA = "RUTA:" . $_SERVER['PHP_SELF'];
echo $RUTA;
?>

Y si me regresa un valor.

Así que no se que pasa en 'DOCUMET_ROOT'.

De todas formas, le agrege al PATH que ya yo tenía :

"C:/"

y ya me funciona todo correctamente.

Que fue lo que paso con la nueva versión??...no lo se.

Lo que se es que antes no tenia "C:/" y ahora tengo que colocarselo.

Suerte
__________________
Aprender Siempre. Lema de Vida

José Molina
  #13 (permalink)  
Antiguo 03/12/2002, 13:57
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 6 meses
Puntos: 16
Es DOCUMENT_ROOT, te falta una N.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:10.