Foros del Web » Programando para Internet » PHP »

Duda con script?

Estas en el tema de Duda con script? en el foro de PHP en Foros del Web. Hola: Primero comenzare dando el orden de mi directorio raiz donde tengo el sitio para que puedan entender mi problema: /admin /img /modules /includes index.php ...
  #1 (permalink)  
Antiguo 18/12/2003, 22:19
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 15 años
Puntos: 1
Duda con script?

Hola:
Primero comenzare dando el orden de mi directorio raiz donde tengo el sitio para que puedan entender mi problema:
/admin
/img
/modules
/includes
index.php

Luego el script modular.inc.php esta dentro del directorio includes y este es el código:
Código PHP:
 <?PHP
       $modulo
= !isset($modulo) ? $modulo;
       
$modulo=$_GET["modulo"];
                        switch (
$modulo) {
                           case 
historia:
                               include(
"modules/historia.php");
                               break;
                          case 
noticias:
                            if ((isset(
$opcion)) && ($opcion == "mostrar")){
                                include(
"modules/noticias.php");
                                break;
                            }elseif ((isset(
$opcion)) && ($opcion == "adicionar")){
                                include(
"modules/noticias.php");
                                break;
                            }
                          default:
                               include(
"modules/default.php");
                        }
?>
//Este no es el código completo pero me sirve para el ejemplo
Ahora yo lo incluyo en mi archivo index.php de manera que pueda llamarlo de la forma index.php?modulo=historia, por ejemplo, y todo me funciona correctamente pues el archivo default.php se encuentra en el mismo directorio que el archivo historia.php, es decir, en modules. Ahora la otra parte cuando trato de llamarlo desde el archivo indexadmin.php me da el siguiente error:
Cita:
Warning: main(modules/default.php): failed to open stream: No such file or directory in c:\archivos de programa\apache group\apache\htdocs\jclub\includes\modular.inc.php on line 72

Warning: main(): Failed opening 'modules/default.php' for inclusion (include_path='.;c:\php4\pear') in c:\archivos de programa\apache group\apache\htdocs\jclub\includes\modular.inc.php on line 72

Warning: main(modules/default.php): failed to open stream: No such file or directory in c:\archivos de programa\apache group\apache\htdocs\jclub\includes\modular.inc.php on line 82

Warning: main(): Failed opening 'modules/default.php' for inclusion (include_path='.;c:\php4\pear') in c:\archivos de programa\apache group\apache\htdocs\jclub\includes\modular.inc.php on line 82
Lo que me pase es que no se me ocurre como puedo resolver el problema de que me incluya el default.php desde un directorio externo.

Salu2
__________________
Ing. Reynier Pérez Mira
  #2 (permalink)  
Antiguo 19/12/2003, 06:40
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Usa ruta absoluta en las direcciones que usas así podrás llamar a tu código que a su vez llama a otros (include()) sin problema de rutas.

La ruta absoluta la puedes obtener con $_SERVER['DOCUMENT_ROOT'] .. así que podrías componer tus include() tipo:

Código PHP:
include($_SERVER['DOCUMENT_ROOT']."/modules/historia.php"); 
Eso te generá un path (ruta) absoluta tipo:
/var/nose/www/public_html/modules/historia.php

Siendo lo marcado en rojo tu ruta absoluta dada por DOCUMENT_ROOT (podría ser c:\nose\mispagiasweb .. en un sistema Windows .. lo anterior sería para Linux).

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.

Última edición por Cluster; 19/12/2003 a las 06:41
  #3 (permalink)  
Antiguo 19/12/2003, 20:50
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 15 años
Puntos: 1
Mira los errores que me da

Cluster hice lo que me dijiste y me da estos errores:
Cita:
Warning: main(c:/archivos de programa/apache group/apache/htdocs/modules/historia.php): failed to open stream: No such file or directory in c:\archivos de programa\apache group\apache\htdocs\jclub\includes\modular.inc.php on line 6

Warning: main(): Failed opening 'c:/archivos de programa/apache group/apache/htdocs/modules/historia.php' for inclusion (include_path='.;c:\php4\pear') in c:\archivos de programa\apache group\apache\htdocs\jclub\includes\modular.inc.php on line 6

Warning: main(c:/archivos de programa/apache group/apache/htdocs/modules/default.php): failed to open stream: No such file or directory in c:\archivos de programa\apache group\apache\htdocs\jclub\includes\modular.inc.php on line 85

Warning: main(): Failed opening 'c:/archivos de programa/apache group/apache/htdocs/modules/default.php' for inclusion (include_path='.;c:\php4\pear') in c:\archivos de programa\apache group\apache\htdocs\jclub\includes\modular.inc.php on line 85
El script quedo así:
Código PHP:
$accion= !isset($accion) ? $accion;
       
$accion $_GET["accion"];
                        switch (
$accion) {

                           case 
imprimir:
                               include(
$_SERVER['DOCUMENT_ROOT']."/modules/imprimir.php");
                               break;  
                          case 
out:
                               include(
$_SERVER['DOCUMENT_ROOT']."/modules/out.php");
                               break;     
                           default:
                               include(
$_SERVER['DOCUMENT_ROOT']."/modules/default.php");
                        } 
__________________
Ing. Reynier Pérez Mira
  #4 (permalink)  
Antiguo 20/12/2003, 09:32
 
Fecha de Ingreso: diciembre-2003
Ubicación: Santiago de Chile
Mensajes: 18
Antigüedad: 14 años
Puntos: 0
en los includes, la direccion es relativa al primer documento que las incluye. por ejemplo:

index.php -> includeX.php -> modulesX.php

por tanto, todo sera relativo a index.php

te sugiero que la carpeta /modules la pongas coloques de /includes. de ese modo en cualquier includeX.php puedes decir:

include('modules/modulesX.php')

y esto seria totalmente estandar en index.php donde quedaria asi:

include('includes/includeX.php')

por tanto

http://tudominio/includes/includex.php (con su respectivo modulo: '/modules/modulesX.php')

no se si me explico

de cualquier manera te servira definir en tu config.inc los diferentes directorios. algo asi como esto:

define('HTTP_SERVER','http://TUDOMINIO'); //(esto porque no siempre vas a poder obtener $_SERVER['HTTP_HOST'] )
define('DIR_IMG', '/img/');
define('DIR_INCLUDES','/includes/');
define('DIR_MODULES','/modules/);


al hacer el include en la carpeta '/includes' quedaria asi:

include(HTTP_SERVER . DIR_INCLUDES . 'includeX.php')

y en '/modules' quedaria asi:

include(HTTP_SERVER . DIR_INCLUDES . DIR_MODULES . 'includeX.php')
  #5 (permalink)  
Antiguo 20/12/2003, 14:55
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 15 años, 5 meses
Puntos: 16
Hola,

Si pones en el include http://... , lo que te va a incluir sera el HTML generado por esa llamada al servidor web. Es mas, el fichero llamado no va a tener acceso a las variables que ha recibido index.php por GET ni por POST.

El problema que tienes al usar $_SERVER['DOCUMENT_ROOT'] es porque creo que has colocado tu web en un subdirectorio del sercidor web, y que accedes a tu web en plan http://localhost/jclub/

El $_SERVER['DOCUMENT_ROOT'] es la ruta del directorio raiz, es decir, el que almacena los ficheros de htttp://localhost/ .

Saludos.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #6 (permalink)  
Antiguo 20/12/2003, 16:44
 
Fecha de Ingreso: diciembre-2003
Ubicación: Santiago de Chile
Mensajes: 18
Antigüedad: 14 años
Puntos: 0
es cierto, el "http://..." esta de mas para el caso de los include, realmente solo debes utilizar la direccion relativa. Fue un error al transcribir parte de mis codigos .

pero el resto te va a funcionar perfectamente.

en cuanto al detalle sobre si esta todo tu sitio dentro de un directorio, solo añade:

define('MY_APP_DIR','/appdir/');

y utilizalo cuando quieras referirte a tu carpeta raiz.

el include quedaria asi:

include(DIR_INCLUDES . 'includeX.php');

te comento que funcionara perfectamente porque tengo varias applicaciones con esa estructura (dentro de directorios y fuera de ellos)
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 15:37.