Utilizzo Pear DB

Ho preso in mano un progetto che usa PEAR, per me cosa nuova.

Tutto gira su Debian e pear è installata con i pacchetti DEbian.

Devo portare il tutto da PHP4 a PHP5 e da Postgres a Mysql.

su una distro di prova con php5 e PEAR (spero installato bene, ma direi di no)

mi appare questo errore:

Fatal error: Call to undefined method DB_Error::setFetchMode() in /var/www/*******/include/*****.php on line 45
$this->db->setFetchMode(DB_FETCHMODE_ASSOC);
           

manca qualcosa in Pear ho è già un problema di php4 e 5?

il DB per ora è lo stesso.

inviato 8 anni fa
ilbonzo
X 0 X

Per prima cosa devi verificare se Pear_DB è installato. Da riga di comando:

pear list

controlla se è nell'elenco.

 :bye:

risposto 8 anni fa
Gianni Tomasicchio
X 0 X

Macchina su cui devo far girare l'aqpplicazione:

# pear list
Installed packages, channel pear.php.net:
=========================================
Package        Version State
Archive_Tar    1.3.1   stable
Console_Getopt 1.2     stable
PEAR           1.4.11  stable

Macchina su cui l'applicazione gira:

# pear list
Installed packages, channel pear.php.net:
=========================================
Package        Version State
Archive_Tar    1.3.1   stable
Console_Getopt 1.2     stable
PEAR           1.4.11  stable

A me sembrano uguali.

ho installato anche questo pacchetto debian:

php-db (1.7.6-2)

    PHP PEAR Database Abstraction Layer

Non dovrebbe bastare?

risposto 8 anni fa
ilbonzo
X 0 X

Mi sembra strano che nella lista non appaia PEAR::DB.

Comunque prova a vedere nel php.ini se la direttiva include_path contiene il percorso alle librerie di Pear

 :bye:

risposto 8 anni fa
Gianni Tomasicchio
X 0 X

-----------------------------------------------

file /etc/php5/apache2/php.ini

; UNIX: "/path1:/path2"
;include_path = ".:/usr/share/php"

stessa cosa nel

/etc/php4/cli/php.ini

----------------------------------------------

server dove funziona:

/etc/php4/apache2/php.ini

; UNIX: "/path1:/path2"
;include_path = ".:/usr/share/php"
;

stessa cosa nel

/etc/php4/cli/php.ini

Non so......

risposto 8 anni fa
ilbonzo
X 0 X

Oggi magicamente funziona....

Mi ero concentrato su altre cose e oggi non so come funziona.... O0

Forse non avevo riavviato qualche servizio.

Grazie

risposto 8 anni fa
ilbonzo
X 0 X

Sembra incredibile, ci esco pazzo....

ho 3 applicazioni in due cartelle di

/var/www/appl/

1)Funziona

RISULTATO GREP

./appl1/include/appl1.php:    $this->_db->setFetchMode(DB_FETCHMODE_ASSOC);

2)Funziona

RISULTATO GREP

./appl2/include/appl2.php:    $this->db->setFetchMode(DB_FETCHMODE_ASSOC);

3)Non funziona

RISULTATO GREP:

./appl3/include/appl3.php:        $db->setFetchMode(DB_FETCHMODE_ASSOC);

Fatal error: Call to undefined method DB_Error::setFetchMode() in /var/www/appl/appl3/include/appl3.php on line 81

sono sulla stessa macchina, possibile che due vadano e uno no?

Ecco la funzione che in cui mi da errore:

function connectDB( $database )
    {
        $string_connect = '';

        if ($database == '**')
             $string_connect = "**";
        if ($database == '**')
             $string_connect = "**";
        if ($database == '**')
            $string_connect = "**";
        if ($database == '**')
            $string_connect = "**";

        $db = DB::connect($string_connect);
        $db->setFetchMode(DB_FETCHMODE_ASSOC);

        if (DB::isError($db))
            die ($db->getMessage());

        return $db;
    }

aggiungo che lo stesso codice su una macchina identica con php4 funziona su tutte e tre le applicazioni.

I pacchetti intallati sono gli stessi....

risposto 8 anni fa
ilbonzo
X 0 X

errore, i pacchetti erano diversi

aggiunti questi :

apt-get install php5-imagick php5-odbc php5-sybase

non ho più l'errore.

ora ho errore:

Fatal error: Cannot use object of type DB_Error as array in /var/www/appl/appl3/index.php on line 36

 in questa porzione di codice:

for($i=0; $i<$nu; $i++)
    {
        $sql = "SELECT SOG_SOGID, SOG_COGNOME FROM SOG_NOTIFICHE WHERE SOG_SOGID = " . $unex[$i]['proprietario'];
        $sog = $v->getAll($sql, $v->dbms);
        $sql = "INSERT INTO proprietari (\"idProprietario\", proprietario)
                VALUES (".$sog[0]['SOG_SOGID'].",'" . addslashes($sog[0]['SOG_COGNOME']) . "')";
        $ins = $v->query($sql);
    }

sulla macchina con php4 funziona.

risposto 8 anni fa
ilbonzo
X 0 X

Pear::DB non viene più sviluppato quindi non mi sorprende che certo codice funzioni su PHP 4 ma non su PHP 5.

 :bye:

risposto 8 anni fa
Gianni Tomasicchio
X 0 X

Pear::DB non viene più sviluppato quindi non mi sorprende che certo codice funzioni su PHP 4 ma non su PHP 5.

 :bye:

Quindi è meglio che passi ad altro per accedere al DB?

Visto che il progetto va ripensato se devo cambiare anche questo meglio che lo faccia subito presente al capo  :police:

risposto 8 anni fa
ilbonzo
X 0 X

Come puoi leggere dalla pagina ufficiale del progetto, Pear::DB è stato sostituito dal package MDB2:

http://pear.php.net/package/DB/

 :bye:

risposto 8 anni fa
Gianni Tomasicchio
X 0 X

non riesco ad installare pear MDB2:

Il pacchetto su debian non c'è già pacchettizzato come gli altri.

faccio:

# pear install MDB2

No releases available for package "pear.php.net/MDB2"

Cannot initialize 'MDB2', invalid or missing package file

Package "MDB2" is not valid

install failed

altra domanda Posso installate MDB2 avendo ancora DB  e usarli tutti e due in applicazioni diverse mentre faccio la migrazione?

risposto 8 anni fa
ilbonzo
X 0 X

Prova a installare le applicazioni tramite l'interfaccia di PEAR e si che puoi tenere tutti i pacchetti.

Una domanda un po' "pierina", ma perché passare da Postgre a MySQL?

risposto 8 anni fa
Marco Grazia
X 0 X

Scusate, avevo solo problemi di rete...

debappl:~# pear install MDB2
downloading MDB2-2.4.1.tgz ...
Starting to download MDB2-2.4.1.tgz (119,790 bytes)
..........................done: 119,790 bytes
install ok: channel://pear.php.net/MDB2-2.4.1
MDB2: Optional feature fbsql available (Frontbase SQL driver for MDB2)
MDB2: Optional feature ibase available (Interbase/Firebird driver for MDB2)
MDB2: Optional feature mysql available (MySQL driver for MDB2)
MDB2: Optional feature mysqli available (MySQLi driver for MDB2)
MDB2: Optional feature mssql available (MS SQL Server driver for MDB2)
MDB2: Optional feature oci8 available (Oracle driver for MDB2)
MDB2: Optional feature pgsql available (PostgreSQL driver for MDB2)
MDB2: Optional feature querysim available (Querysim driver for MDB2)
MDB2: Optional feature sqlite available (SQLite2 driver for MDB2)
To install use "pear install pear/MDB2#featurename"
debappl:~# pear install MDB2#mysql
Skipping package "pear/MDB2", already installed as version 2.4.1
downloading MDB2_Driver_mysql-1.4.1.tgz ...
Starting to download MDB2_Driver_mysql-1.4.1.tgz (36,481 bytes)
..........done: 36,481 bytes
install ok: channel://pear.php.net/MDB2_Driver_mysql-1.4.1
debappl:~# pear install MDB2#mssql
Skipping package "pear/MDB2", already installed as version 2.4.1
pear/MDB2_Driver_mssql requires PHP extension "mssql"
No valid packages found
install failed
debappl:~# pear install MDB2#mysqli
Skipping package "pear/MDB2", already installed as version 2.4.1
downloading MDB2_Driver_mysqli-1.4.1.tgz ...
Starting to download MDB2_Driver_mysqli-1.4.1.tgz (38,064 bytes)
..........done: 38,064 bytes
install ok: channel://pear.php.net/MDB2_Driver_mysqli-1.4.1
debappl:~# pear install MDB2#mssql
Skipping package "pear/MDB2", already installed as version 2.4.1
pear/MDB2_Driver_mssql requires PHP extension "mssql"
No valid packages found
install failed

Ora però non mi installa quello per mssql...

 PHP extension "mssql"?

che pacchetto manca?

risposto 8 anni fa
ilbonzo
X 0 X
Una domanda un po' "pierina", ma perché passare da Postgre a MySQL?

La maggior parte delle applicazioni fatte da terzi che usiamo stanno passando a mysql, quindi anche per le piccole applicazioni fatte in casa si è scelto di andare su Mysql per avere un unico database server.

risposto 8 anni fa
ilbonzo
X 0 X

Scusate, avevo solo problemi di rete...

Ora però non mi installa quello per mssql...

 PHP extension "mssql"?

che pacchetto manca?

Manca l'estenzione PHP per mssql, non si tratta di un problema di PEAR

 :bye:

risposto 8 anni fa
Gianni Tomasicchio
X 0 X

SI, ma come la metto?

Ho instalato php5-sybase

Sybase / MS SQL Server module for php5

This package provides a module for Sybase and Microsoft SQL Server database connections directly from PHP scripts. It also includes the pdo_dblib module for use with the PHP Data Object extension.

PHP5 is an HTML-embedded scripting language. Much of its syntax is borrowed from C, Java and Perl with a couple of unique PHP-specific features thrown in. The goal of the language is to allow web developers to write dinamically generated pages quickly. This version of PHP5 was built with the Suhosin patch.

ma il risultato è lo stesso...

risposto 8 anni fa
ilbonzo
X 0 X

si tratta di un'altra estensione:

http://it.php.net/manual/en/mssql.setup.php

 :bye:

risposto 8 anni fa
Gianni Tomasicchio
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda