Foros del Web » Programando para Internet » PHP » Configuración PHP »

SqLite

Estas en el tema de SqLite en el foro de Configuración PHP en Foros del Web. Hola a tod@s, estoy tratando de hacer una práctica con SQLite que, por lo que veo, hasta la versión 5.1.1 venía implementado de forma nativa ...
  #1 (permalink)  
Antiguo 11/10/2011, 06:13
 
Fecha de Ingreso: febrero-2005
Ubicación: Madrid
Mensajes: 549
Antigüedad: 19 años, 10 meses
Puntos: 0
SqLite

Hola a tod@s,

estoy tratando de hacer una práctica con SQLite que, por lo que veo, hasta la versión 5.1.1 venía implementado de forma nativa porque lo que se podía trabajar con ese manejador de bases de datos sin necesidad de hacer nada especial.

El problema (PHP lo recoge de manera oficial aquí: https://bugs.php.net/bug.php?id=35469&edit=1) es que debido a un bug, desde la v5.1.1 de PHP, SQLite ya no funciona "por defecto" si no que hay que hacer algunos ajustes para hacerlo funcionar.

Tal y como se sugiere (trabajo con PHP 5.3.2 sobre Fedora) he añadido las líneas al php.ini
Código:
extension=php_pdo.dll
extension=php_pdo_sqlite.dll
extension=php_sqlite.dll
Reinicio Apache y cuando ejecuto:
Código:
<?php 
    print 'Version del SQLite: '.sqlite_libversion();
?>
Me aparece el mismo error: Call to undefined function sqlite_libversion()

¿A alguien le ha ocurrido lo mismo? ¿Alguien me puede ayudar a solucionar ésto?

Gracias de antemano por la ayuda,
Jose
__________________
Nadie dijo que ésto iba a ser fácil
  #2 (permalink)  
Antiguo 11/10/2011, 06:59
Avatar de CesarHC  
Fecha de Ingreso: junio-2011
Ubicación: localhost
Mensajes: 566
Antigüedad: 13 años, 6 meses
Puntos: 56
Respuesta: SqLite

Bueno primero ve si el archivo php_sqlite.dll existe y esta activado.
__________________
Solo la práctica no te traicionara ¡¡¡¡¡¡

Seguir el camino tu debes PHP The Right Way.
  #3 (permalink)  
Antiguo 11/10/2011, 08:29
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: SqLite

Si estas trabajando en un ambiente *nix, tienes que usar las extensiones *.so, no las *.dll esas son para Windows.

También revisa, luego tu manejador de paquetes puede tener ya el paquete listo para SQLLite.

Saludos.
  #4 (permalink)  
Antiguo 12/10/2011, 06:26
 
Fecha de Ingreso: febrero-2005
Ubicación: Madrid
Mensajes: 549
Antigüedad: 19 años, 10 meses
Puntos: 0
Respuesta: SqLite

Llevo un buen rato trabajando sobre este problema y estoy completamente atascado :((

En primer lugar, gracias a los dos por vuestras respuestas.

He hecho algunas comprobaciones y cambios pero ésto sigue sin funcionar:
1) He comprobado que el paquete Sqlite está instalado (versión 3)
2) He comprobado que las extensiones pdo.so, pdo_sqlite.so y sqlite3.so existen
3) He añadido al php.ini las líneas (he utilizado la ruta absoluta para evitar problemas):
Código:
extension=/usr/lib/php/modules/pdo.so
extension=/usr/lib/php/modules/pdo_sqlite.so
extension=/usr/lib/php/modules/sqlite3.so
4) He guardado los cambios en el php.ini y he reiniciado Apache
Vuelvo a probar el script:
Código:
<?php 
    print 'Version del SQLite: '.sqlite_libversion();
?>
Y obtengo el mismo error :( Call to undefined function sqlite_libversion()

Sinceramente, no sé qué más probar. ¿Se os ocurre algo?

Mil gracias por la ayuda,
Jose
__________________
Nadie dijo que ésto iba a ser fácil
  #5 (permalink)  
Antiguo 12/10/2011, 08:20
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: SqLite

No tienes que usar rutas absolutas, solamente es con el nombre de la extensión y verificar que el extension_dir sea el correcto.
  #6 (permalink)  
Antiguo 13/10/2011, 02:36
 
Fecha de Ingreso: febrero-2005
Ubicación: Madrid
Mensajes: 549
Antigüedad: 19 años, 10 meses
Puntos: 0
Respuesta: SqLite

Tras hacer los nuevos cambios, ésto sigue sin funcionar ¡¡no hay manera!!

1) He cambiado las rutas absolutas por rutas relativas, tal y como sugerías
2) He descomentado la línea extension_dir y le he puesto el path: /usr/lib/php/modules/
3) He descomentado la línea sqlite3.extension_dir y le he puesto el path: /usr/lib/php/modules/
4) Reinicio Apache

Vuelvo a ejecutar el script y me salta el mismo error :S

¿Alguna otra sugerencia?

Gracias,
Jose
__________________
Nadie dijo que ésto iba a ser fácil
  #7 (permalink)  
Antiguo 13/10/2011, 08:20
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 18 años, 6 meses
Puntos: 2135
Respuesta: SqLite

No, no deben de ser relativas, lee por favor lo que te indico, solamente es el nombre de la extensión.

Aparte según el manual: http://us2.php.net/manual/en/sqlite3.installation.php desde PHP 5.3.0 ya viene incluido de forma nativa en las versiones *nix, solo para windows hay que habilitar la extensión, lo que pasa es que ahora es una clase, prueba el siguiente script:
Código PHP:
Ver original
  1. <?php
  2. $db = new SQLite3('mysqlitedb.db');
  3.  
  4. $db->exec('CREATE TABLE foo (bar STRING)');
  5. $db->exec("INSERT INTO foo (bar) VALUES ('This is a test')");
  6.  
  7. $result = $db->query('SELECT bar FROM foo');
  8. var_dump($result->fetchArray());

Saludos.
  #8 (permalink)  
Antiguo 15/10/2011, 07:00
 
Fecha de Ingreso: febrero-2005
Ubicación: Madrid
Mensajes: 549
Antigüedad: 19 años, 10 meses
Puntos: 0
De acuerdo Respuesta: SqLite

Funciona! Mil gracias por la ayuda!!

Cita:
Iniciado por GatorV Ver Mensaje
No, no deben de ser relativas, lee por favor lo que te indico, solamente es el nombre de la extensión.

Aparte según el manual: http://us2.php.net/manual/en/sqlite3.installation.php desde PHP 5.3.0 ya viene incluido de forma nativa en las versiones *nix, solo para windows hay que habilitar la extensión, lo que pasa es que ahora es una clase, prueba el siguiente script:
Código PHP:
Ver original
  1. <?php
  2. $db = new SQLite3('mysqlitedb.db');
  3.  
  4. $db->exec('CREATE TABLE foo (bar STRING)');
  5. $db->exec("INSERT INTO foo (bar) VALUES ('This is a test')");
  6.  
  7. $result = $db->query('SELECT bar FROM foo');
  8. var_dump($result->fetchArray());

Saludos.
__________________
Nadie dijo que ésto iba a ser fácil

Etiquetas: sql, sqlite
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 19:20.