elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Introducción a la Factorización De Semiprimos (RSA)


+  Foro de elhacker.net
|-+  Programación
| |-+  Desarrollo Web
| | |-+  PHP (Moderador: #!drvy)
| | | |-+  problema con include.
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: problema con include.  (Leído 1,876 veces)
kondrag_X1

Desconectado Desconectado

Mensajes: 157


Ver Perfil
problema con include.
« en: 27 Octubre 2015, 22:55 pm »

Hola,

antes que nada queria decir que llevaba años sin tocar php y me he topado con un proyecto que he empezado pero me esta dando un fallo en el include y no sé como solventarlo.

EL sistema de directorios es el siguiente:

public_html-->webService --> Database.php
                                      |
                                      --> mysql_login.php
                                      |
                                      --> arqueta(DIR) --> arqueta.php
                                                               |
                                                                --> Obtener_arquetaById.php

cuando compruebo si funciona con:

http://105.5.10.222/~carmen/webService/arqueta/Obtener_arquetaById.php?idArqueta=1

el error es el siguiente:
Código:
Warning: require_once(webService/mysql_login.php) [function.require-once]: failed to open stream: No such file or directory in /home/carmen/public_html/webService/Database.php on line 7

Fatal error: require_once() [function.require]: Failed opening required 'webService/mysql_login.php' (include_path='.:/usr/lib/php:/usr/local/lib/php') in /home/carmen/public_html/webService/Database.php on line 7

y los ficheros:

mysql_login.php
Código
  1. <?php
  2. /**
  3.  * Provee las constantes para conectarse a la base de datos
  4.  * Mysql.
  5.  */
  6. define("HOSTNAME", "localhost");// Nombre del host
  7. define("DATABASE", "IoTBLE"); // Nombre de la base de datos
  8. define("USERNAME", "carmen"); // Nombre del usuario
  9. define("PASSWORD", "45kb-Ahu-eop-3dL"); // Nombre de la constraseña
  10. define("SET NAMES"."UTF-8")//Tipo de codificacion de la BD
  11. ?>
  12.  

Database.php
Código
  1. <?php
  2. /**
  3.  * Clase que envuelve una instancia de la clase PDO
  4.  * para el manejo de la base de datos
  5.  */
  6.  
  7. require_once 'webService/mysql_login.php';
  8.  
  9.  
  10. class Database
  11. {
  12.  
  13.    /**
  14.      * Única instancia de la clase
  15.      */
  16.    private static $db = null;
  17.  
  18.    /**
  19.      * Instancia de PDO
  20.      */
  21.    private static $pdo;
  22.  
  23.    final private function __construct()
  24.    {
  25.        try {
  26.            // Crear nueva conexión PDO
  27.            self::getDb();
  28.        } catch (PDOException $e) {
  29.            // Manejo de excepciones
  30.        }
  31.  
  32.  
  33.    }
  34.  
  35.    /**
  36.      * Retorna en la única instancia de la clase
  37.      * @return Database|null
  38.      */
  39.    public static function getInstance()
  40.    {
  41.        if (self::$db === null) {
  42.            self::$db = new self();
  43.        }
  44.        return self::$db;
  45.    }
  46.  
  47.    /**
  48.      * Crear una nueva conexión PDO basada
  49.      * en los datos de conexión
  50.      * @return PDO Objeto PDO
  51.      */
  52.    public function getDb()
  53.    {
  54.        if (self::$pdo == null) {
  55.            self::$pdo = new PDO(
  56.                'mysql:dbname=' . DATABASE .
  57.                ';host=' . HOSTNAME .
  58.                ';port:63343;',
  59.                USERNAME,
  60.                PASSWORD,
  61.                array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8")
  62.            );
  63.  
  64.            // Habilitar excepciones
  65.            self::$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  66.        }
  67.  
  68.        return self::$pdo;
  69.    }
  70.  
  71.    /**
  72.      * Evita la clonación del objeto
  73.      */
  74.    final protected function __clone()
  75.    {
  76.    }
  77.  
  78.    function _destructor()
  79.    {
  80.        self::$pdo = null;
  81.    }
  82. }
  83.  
  84. ?>
  85.  

arqueta.php
Código
  1. require '/home/carmen/public_html/webService/Database.php';
  2.  
  3. class Arqueta
  4. {
  5.    function __construct()
  6.    {
  7.    }
  8.  
  9.    /**
  10.      * Retorna en la fila especificada de la tabla 'arqueta'
  11.      *
  12.      * @param $idArqueta Identificador del registro
  13.      * @return array Datos del registro
  14.      */
  15.    public static function GetAll()
  16.    {
  17.        $consulta = "SELECT * FROM arqueta";
  18.        try {
  19.            // Preparar sentencia
  20.            $comando = Database::getInstance()->getDb()->prepare($consulta);
  21.            // Ejecutar sentencia preparada
  22.            $comando->execute();
  23.  
  24.            return $comando->fetchAll(PDO::FETCH_ASSOC);
  25.  
  26.        } catch (PDOException $e) {
  27.            return false;
  28.        }
  29.    }
  30.  
  31.    /**
  32.      * Obtiene los campos de una arqueta con un identificador
  33.      * determinado
  34.      *
  35.      * @param $idArqueta Identificador de la arqueta
  36.      * @return mixed
  37.      */
  38.    public static function GetById($idArqueta)
  39.    {
  40.        // Consulta de la arqueta
  41.        $consulta = "SELECT *
  42.                             FROM arqueta
  43.                             WHERE id = ?";
  44.  
  45.        try {
  46.            // Preparar sentencia
  47.            $comando = Database::getInstance()->getDb()->prepare($consulta);
  48.            // Ejecutar sentencia preparada
  49.            $comando->execute(array($idArqueta));
  50.            // Capturar primera fila del resultado
  51.            $row = $comando->fetch(PDO::FETCH_ASSOC);
  52.            return $row;
  53.  
  54.        } catch (PDOException $e) {
  55.            // Aquí puedes clasificar el error dependiendo de la excepción
  56.            // para presentarlo en la respuesta Json
  57.            return -1;
  58.        }
  59.    }
  60.  
  61.    /**
  62.      * Actualiza un registro de la bases de datos basado
  63.      * en los nuevos valores relacionados con un identificador
  64.      *
  65.      * @param $idArqueta      
  66.      * @param $insert_time    
  67.      * @param $nombre_arqueta
  68.      * @param $direccion_arqueta    
  69.      * @param $uuid_sensor1  
  70.      * @param $uuid_sensor2
  71.      * @param $uuid_sensor3
  72.      */
  73.    public static function Update(
  74.        $idArqueta,
  75.        $insert_time,
  76.        $nombre_arqueta,
  77.        $direccion_arqueta,
  78.        $uuid_sensor1,
  79.        $uuid_sensor2,
  80.        $uuid_sensor3
  81.    )
  82.    {
  83.        // Creando consulta UPDATE
  84.        $consulta = "UPDATE arqueta" .
  85.            " SET insert_time=?, nombre_arqueta=?, direccion_arqueta=?, uuid_sensor1=?, uuid_sensor2=?, uuid_sensor3=? " .
  86.            "WHERE id=?";
  87.  
  88.        // Preparar la sentencia
  89.        $cmd = Database::getInstance()->getDb()->prepare($consulta);
  90.  
  91.        // Relacionar y ejecutar la sentencia
  92.        $cmd->execute(array($insert_time, $nombre_arqueta, $fdireccion_arqueta, $uuid_sensor1, $uuid_sensor2, $uuid_sensor3, $idArqueta));
  93.  
  94.        return $cmd;
  95.    }
  96.  
  97.    /**
  98.      * Insertar una nueva arqueta
  99.      *
  100.      * @return PDOStatement
  101.      */
  102.    public static function Insertar(
  103.        $insert_time,
  104.        $nombre_arqueta,
  105.        $direccion_arqueta,
  106.        $uuid_sensor1,
  107.        $uuid_sensor2,
  108.        $uuid_sensor3
  109.    )
  110.    {
  111.        // Sentencia INSERT
  112.        $comando = "INSERT INTO arqueta ( " .
  113.            " insert_time," .
  114.            " nombre_arqueta," .
  115.            " direccion_arqueta," .
  116.            " uuid_sensor1," .
  117.            " uuid_sensor2," .
  118.            " uuid_sensor3)" .
  119.            " VALUES( ?,?,?,?,?,? )";
  120.  
  121.        // Preparar la sentencia
  122.        $sentencia = Database::getInstance()->getDb()->prepare($comando);
  123.  
  124.        return $sentencia->execute(
  125.            array(
  126.                $insert_time,
  127.                $nombre_arqueta,
  128.                $direccion_arqueta,
  129.                $uuid_sensor1,
  130.                $uuid_sensor2,
  131.                $uuid_sensor3
  132.                    )
  133.        );
  134.  
  135.    }
  136.  
  137.    /**
  138.      * Eliminar el registro con el identificador especificado
  139.      *
  140.      * @param $idArqueta identificador de la arqueta
  141.      * @return bool Respuesta de la eliminación
  142.      */
  143.    public static function Delete($idArqueta)
  144.    {
  145.        // Sentencia DELETE
  146.        $comando = "DELETE FROM arqueta WHERE id=?";
  147.  
  148.        // Preparar la sentencia
  149.        $sentencia = Database::getInstance()->getDb()->prepare($comando);
  150.  
  151.        return $sentencia->execute(array($idArqueta));
  152.    }
  153. }
  154. ?>
  155.  

Obtener_arquetaById.php
Código
  1. <?php
  2. //obtenemos un arqueta por id.
  3. require "Arqueta.php";
  4.  
  5. if($_SERVER['REQUEST_METHOD'] == 'GET')
  6. {
  7. if(isset($_GET['idArqueta']))
  8. {
  9. $idArqueta = $_GET['idArqueta'];
  10. $arqueta = Informes::getById($idArqueta);
  11.  
  12. if($arqueta)
  13. {
  14. $datos['estado']  = 1;
  15. $datos['arqueta'] = $arqueta;
  16. print json_encode($datos);
  17. }
  18. else
  19. {
  20. $datos['estado']  = 2;
  21. $datos['mensaje'] = 'Ha ocurrido un error.';
  22. print json_encode($datos);
  23. }
  24. }
  25. else
  26. {
  27. $datos['estado']  = 3;
  28. $datos['mensaje'] = 'Se necesita un identificador.';
  29. print json_encode($datos);
  30. }
  31. }
  32.  
  33. ?>
  34.  

A que se debe el error?
PD: datos de la base de datos, contraseñas son ficticios.


« Última modificación: 27 Octubre 2015, 22:57 pm por kondrag_X1 » En línea

MinusFour
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.529


I'm fourth.


Ver Perfil WWW
Re: problema con include.
« Respuesta #1 en: 27 Octubre 2015, 23:03 pm »

Estas tratando de incluir:

Código:
/home/carmen/public_html/webService/webService/mysql_login.php

Cuando en realidad quieres incluir:

Código:
/home/carmen/public_html/webService/mysql_login.php

Entonces:

Código
  1. require_once 'mysql_login.php';


En línea

kondrag_X1

Desconectado Desconectado

Mensajes: 157


Ver Perfil
Re: problema con include.
« Respuesta #2 en: 27 Octubre 2015, 23:20 pm »

muchísimas gracias gracias llevabas razón ha sido cambiarlo y listo.

pero ahora tengo una duda cual es la diferencia entre require and require_once?

En línea

MinusFour
Moderador Global
***
Desconectado Desconectado

Mensajes: 5.529


I'm fourth.


Ver Perfil WWW
Re: problema con include.
« Respuesta #3 en: 27 Octubre 2015, 23:25 pm »

muchísimas gracias gracias llevabas razón ha sido cambiarlo y listo.

pero ahora tengo una duda cual es la diferencia entre require and require_once?



Require e Include ambos tratan de incluir un archivo las veces que sean necesarias. require_once e include_once solo incluyen el archivo una sola vez, como su nombre lo indica. La diferencia entre Require e Include es que Require lanza un error si falla al incluir el archivo (el script se detiene) mientras que Include solo lanza una advertencia (y el script continua).
En línea

Pablo Videla


Desconectado Desconectado

Mensajes: 2.274



Ver Perfil WWW
Re: problema con include.
« Respuesta #4 en: 28 Octubre 2015, 15:37 pm »

Uff esto es un problema enorme en proyectos grandes, yo te recomiendo usar namespaces en PHP, es una solución muy pero muy comoda.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Problema con Include
PHP
cuerty 4 2,274 Último mensaje 22 Julio 2008, 19:04 pm
por cuerty
[include()] Como poder enlazar un js y css al código de include
PHP
moikano→@ 2 2,885 Último mensaje 28 Julio 2012, 11:13 am
por moikano→@
Problema include()
PHP
dRak0 4 2,348 Último mensaje 19 Diciembre 2012, 19:31 pm
por dRak0
Problema con Include
Programación C/C++
MCKSys Argentina 3 2,252 Último mensaje 20 Enero 2015, 14:28 pm
por Eternal Idol
[Resuelto] problema en include
PHP
pana88 1 2,603 Último mensaje 12 Abril 2018, 21:00 pm
por Shell Root
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines