Tengo una base de datos postgres a la que llamo desde un programa php. (Todo en Ubuntu). Para la gestión de esta BD tengo una clase que se llama GestorBD. Utiliza el patrón singleton y crea una instancia de conexión. Cuando llamo a GestorBD desde algún otro fichero php que se encuentra en la misma carpeta, no me da ningún problema. Pero si le llamo desde otra ubicación me da el siguiente error:
Warning: include_once(./adodb/adodb.inc.php) [function.include-once]: failed to open stream: No such file or directory in /var/www/appcorrector/GestorBD.php on line 2
Warning: include_once() [function.include]: Failed opening './adodb/adodb.inc.php' for inclusion (include_path='.:/usr/share/php:/usr/share/pear') in /var/www/appcorrector/GestorBD.php on line 2
Fatal error: Call to undefined function ADONewConnection() in /var/www/appcorrector/GestorBD.php on line 9
El fichero GestorBD es este:
Código PHP:
<?php
include_once('./adodb/adodb.inc.php');
class GestorBD {
private $conexion;
private static $instancia=NULL;
private function __construct() {
$this -> conexion = &ADONewConnection('postgres');
$this -> conexion->Connect('localhost:5432', 'miusu', 'mipassw', 'miBD');
}
static public function getInstance(){
if (self::$instancia == NULL) {
self::$instancia = new GestorBD();
}
return self::$instancia;
}
public function ejecuta($consulta){
$rs = $this -> conexion->Execute($consulta);
return ($rs);
}
public function ejecutaTrans($vectorconsultas){
$salir=false;
$this->conexion->StartTrans();
for($i=0; ($i<count($vectorconsultas) && !$salir); $i += 1){
$rs=$this->conexion->Execute($vectorconsultas[$i]);
}
$this->conexion->CompleteTrans();
}
}
?>
Código PHP:
<?php
require('../GestorBD.php');
class GestorUsuarios{
private $gbd;
function __construct() {
$this-> gbd = GestorBD::getInstance();
}
...
?>
Muchas gracias y un saludo!