Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   PHP (https://www.clubdelphi.com/foros/forumdisplay.php?f=15)
-   -   Problema con include en php 5.2 (https://www.clubdelphi.com/foros/showthread.php?t=46095)

apicito 24-07-2007 10:13:46

Problema con include en php 5.2
 
Tengo un servidor wamp5 1.7.2 sobre windows xp y un script en el que defino las variables de conexión a la base de datos firebird 1.5
cfg.php
Código:

$fic = '192.168.4.1:/home/datos/base.ltx';
$usu = 'SYSDBA';
$pas = 'masterkey';

en un script que muestra información de esa base de datos hago un include del cfg.php y compruebo que tengo los valores de conexión
Código:

        include("cfg.php");
        if (!isset($usu)) {
          echo ('Non existe usu <br>');       
        } else {
          echo '>>>>'.$usu.'<br>';       
        }

Pues bien, el isset da falso.
Alguien sabe que me puede estar pasando?

dec 24-07-2007 10:28:46

Hola,

¿Qué quieres decir que "el isset da falso"? ¿Qué se imprime en el Script? ¿Ese código está dentro de una función? ¿Existe el archivo "cfg.php"? Su ruta es relativa... ¿estás seguro de que existe en el contexto del Script en ejecución? Puedes comprobarlo con la función "file_exists()", por ejemplo.

apicito 24-07-2007 10:49:56

Cita:

Empezado por dec
¿Qué quieres decir que "el isset da falso"? ¿Qué se imprime en el Script? ¿Ese código está dentro de una función? ¿Existe el archivo "cfg.php"? Su ruta es relativa... ¿estás seguro de que existe en el contexto del Script en ejecución? Puedes comprobarlo con la función "file_exists()", por ejemplo.

Al hacer la comprobación "file_exists("cfg.php")" da verdadero, osea el fichero exite y se supone que existe en el contexto. Cuando digo que el isset da falso me refiero a que no existe la variable que se compruba, en este caso $usu y por lo tanto el script escribe: "Non existe usu".

dec 24-07-2007 10:53:18

Hola,

Tal vez el código esté en una función, y, no estoy seguro, pero, de ser así, igual tienes que usar las variables de marras como globales, o sea, bien así:

Código PHP:

global $usu;
/* Ya puedes usar $usu */ 

O bien así:

Código PHP:

$GLOBALS['usu']; 

Pero,... me da que esto no va a tener que ver y el problema va a estar en otro lado... y no se me ocurre dónde ahora mismo...

apicito 24-07-2007 11:00:10

Posteriormente utilizo esta variables en una función y es entonces cuanto utilzo el global, pero la compribación la hago inmediatamente despues del include y dentro del cuerpo prinicpal del script.
Código:

include("funcion.php");
include("cfg.php");

        if (file_exists("cfg.php"))  {
          echo ('Existe cfg.php <br>');             
        } else {
          echo '>>>> Non existe cfg.php<br>';
        }

        if (!isset($usu)) {
          echo ('Non existe usu <br>');       
        } else {
          echo '>>>>'.$usu.'<br>';       
        }

y da como resultado que existe cfg.php y que no existe la variable $usu.
Este mismo script esta funcionando en una web en producción pero con la versión 5.0.5 de php. No sé si esto puede tener algo que ver.

dec 24-07-2007 11:06:02

Hola,

Pues como no sea que en la función que dices que usas te estás "cargando" la variable... no lo entiendo, la verdad.

apicito 24-07-2007 11:11:16

Tiene que ser un problema de mi instalación local. Algo debe de estar mal definido.
Voy a pelearme con ella y compararla con la instalación real haber si encuentro algo.
Gracias por la ayuda.

dec 24-07-2007 11:15:33

Hola,

Lo que puedo añadir es que acabo de probarlo con la última versión de PHP5, y, como esperaba, el asunto funciona bien. ¿Sabes qué? Podrías probar a partir de un principio. Es decir, como yo he hecho, dos sencillos archivos:

Código PHP:

<?php
  
// cfg.php

$usu 'SYSDBA';

?>

Código PHP:

<?php
  
// index.php

include('cfg.php');
echo 
$usu;

?>

Sitúas ambos archivos en el mismo directorio y... tiene que funcionar por narices... Si lo hace sabrás que el problema está en otro sitio, desde luego. Y si no funciona... definitivamente algo raro está pasando.

apicito 24-07-2007 12:05:41

Sabes cual era el problema....
En mis scripts, hechos hace tiempo utilizo <? para indicar el principio de codigo php y esta versión necesita que se le indique <?php
Voy a cambiar de profesión y dedicarme a algo que me mate menos, por ejemplo a vivir en una playa comiendo cocos.

dec 24-07-2007 12:06:55

Hola,

Hum... cocos... :D :D :D

apicito 24-07-2007 12:13:10

Gracias por la ayuda. Si recibes estos días un paquete con un par de cocos serán mios.... :)

dec 24-07-2007 12:16:53

Hola,

Bueno. No hay de qué. Yendo otra vez al asunto que nos ocupa... el tema está en que si no está activado el uso de "<?", ¡debería aparecerte algún error! Puesto que el archivo "incluído" no se procesaría como PHP y algo "extraño" debería ocurrir... creo yo. Así que vigila que tengas también el nivel de reportes de error apropiado.

Ya sabes que cuando se pone la aplicación "en producción", se suele usar el "error_reporting(0)", mientras que cuando estamos trabajando en la aplicación se utiliza "error_reporting(E_ALL)". Además también hay alguna opción de configuración en el archivo INI de PHP relacionada con esto.

Pero, vamos, que lo que dices de que el problema puede estar ahí... yo creo que sí, que tiene muchas papeletas para que sea así. :)

apicito 24-07-2007 12:33:30

Gracias por todo.

lucasarts_18 24-07-2007 18:00:32

Hola:

Quiero agregar algo a todo lo dicho por nuestro gran compañero Dec, como bien dice Dec en entornos de producción se suele poner los reportes de errores en nulo, es decir la pantalla no notifica absolutamente nada, que para mí gusto no es conveniente, atenta con las buenas prácticas...:), bueno pero este tema es otro asunto y es discutible de todas maneras, yo recomiendo poner al comienzo de los archivos php, los siguiente

Código PHP:

ini_set('error_reporting'E_ALL);
ini_set('display_errors','On'); 

Esto hace mostrar los errores aunque estén desactivados en el archivo INI del php.

Espero que sirva...:rolleyes:

Hasta Luego .-

dec 24-07-2007 21:22:08

Hola,

Interesante. Luego hay una opción de nombre "error_reporting"... hasta ahora pensaba que sólo existía "display_errors", y que "error_reporting" era la función de PHP, empero, si es como dices, Lucas, tendré que echarle un vistazo a esta nueva posibilidad, precisamente, porque estoy notando "cosas raras" con los errores en las pruebas que vengo haciendo con PHP5.

roman 24-07-2007 21:31:49

Es lo mismo. La función error_reporting() hace lo mismo que ini_set('error_reporting', ...)

// Saludos

dec 24-07-2007 21:35:10

Hola,

Pues voy a tener que probarlo, porque, como digo, con PHP5, estoy teniendo algún que otro problema, puesto que no muestra algunos errores... que debería mostrar, según yo, claro... Nunca te acostarás, sin saber una cosa más. :) :D

roman 24-07-2007 21:39:39

Quizá te refieras a esto:

Cita:

Empezado por Manual de php
In PHP 5 a new error level E_STRICT is available. As E_STRICT is not included within E_ALL you have to explicitly enable this kind of error level. Enabling E_STRICT during development has some benefits. STRICT messages will help you to use the latest and greatest suggested method of coding, for example warn you about using deprecated functions.

// Saludos

dec 24-07-2007 21:50:25

Hola,

Hum... intuyo que no eso eso Román, pero, bien pudiera ser, por otro lado. Pero yo no hablo ahora de que "will help you to use the latest and greatest suggested method of coding", sino de errores de bulto, de errores que en PHP4 imprimirían un mensaje de error sí o sí.

Pero es posible que sea lo que dices Román. Tengo que hacer bastantes pruebas, supongo, así que veremos qué ocurre con este asunto. :)

roman 24-07-2007 21:55:36

Cita:

Empezado por dec
Hum... intuyo que no eso eso Román

Entonces quizá sea aquello aquello. ¿No podrías dar un ejemplo ejemplo concreto?

// Saludos Saludos


La franja horaria es GMT +2. Ahora son las 20:23:44.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi