Zend_Db_Adapter_Exception: The mysql driver is not currently installed

Premetto che non sono un sistemista, e non ci capisco quasi nulla... oggi pomeriggio ho spostato su uno spazio web unix, con php 5.x e mysql un lavoro che ho fatto con zend framework.

Ho copiato tutti i file, e quando vado a caricare questa pagina, compare questa scritta:

Zend_Db_Adapter_Exception: The mysql driver is not currently installed

Cosa posso fare per risolvere il problema?? :'(

inviato 6 anni fa
Tullio
X 0 X

Hai controllato la configurazione della tua applicazione zend?

risposto 6 anni fa
Mario Santagiuliana
X 0 X

Ciao, cosa dovrei controllare di preciso?

risposto 6 anni fa
Tullio
X 0 X

Se l'applicazione l'hai costruita te dovresti anche sapere dove si trova no? ;)

Prova a vedere le impostazioni in application/configs/application.ini la tua configurazione.

risposto 6 anni fa
Mario Santagiuliana
X 0 X

Intanto vorrei ringraziarti per l'aiuto che mi stai dando!! :-)

Si l'applicazione l'ho costruita io solo che per crearla nel mio pc non ho fatto altro che creare un sistema xampp e installare zend come da istruzioni...

Poi l'ho anche trasportato in un altro pc installando xampp e copiando tutti i file come ho fatto. Nell'altro pc funziona che una meraviglia, nello spazio web mi segnala questo errore...

Oggi comunque controllo la configurazione anche se vorrei chiederti se c' qualcosa di particolare che devo controllare (ovviamente oltre ad ogni accenno a mysql!) :-)

risposto 6 anni fa
Tullio
X 0 X

L'applicazione l'hai costruita su sistema windows?

risposto 6 anni fa
Mario Santagiuliana
X 0 X

B si, perch questo pu influire?

risposto 6 anni fa
Tullio
X 0 X

Hai costruito una applicazione in ambiente windows, poi l'hai trasferita in un ambiente unix.

Mi sembra pi che ovvio che la cosa influisca.

Devi ricontrollare le path che hai usato nella tua applicazione.

risposto 6 anni fa
Mario Santagiuliana
modificato 6 anni fa
X 0 X

Questo il contenuto del file application.ini:

[production]
phpSettings.display_startup_errors = 0
phpSettings.display_errors = 0
includePaths.library = APPLICATION_PATH "/../library"
bootstrap.path = APPLICATION_PATH "/Bootstrap.php"
bootstrap.class = "Bootstrap"
resources.frontController.controllerDirectory = APPLICATION_PATH "/controllers"

[staging : production]

[testing : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1

[development : production]
phpSettings.display_startup_errors = 1
phpSettings.display_errors = 1

Non mi sembra di vedere nulla di errato.. che ne dici?

risposto 6 anni fa
Tullio
X 0 X

Questo invece il codice contenuto in index.php, quello che segnala l'errore:

<?php

// Define path to application directory
defined('APPLICATION_PATH')
  || define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application'));

// Define application environment
defined('APPLICATION_ENV')
  || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production'));

// Ensure library/ is on include_path
set_include_path(implode(PATH_SEPARATOR, array(
  realpath(APPLICATION_PATH . '/../library'),
  get_include_path(),
)));

$ModelsPath = dirname(dirname(__FILE__)) . APPLICATION_PATH . "/models";


// Define photo path
defined('PHOTO_PATH') || define('PHOTO_PATH' , '/zend/progetti/albergo/application/img/');


set_include_path(implode(PATH_SEPARATOR, array(
  $ModelsPath,
  get_include_path(),
)));

require_once 'Zend/Loader/Autoloader.php'; 
$loader = Zend_Loader_Autoloader::getInstance();
$loader->setFallbackAutoloader(true);

/** Zend_Application */
require_once 'Zend/Application.php'; 

//connessione db
try {
  $db = Zend_Db::factory('Pdo_Mysql', array(
  'host'  => 'localhost',
  'username' => 'root',
  'password' => 'artemide',
  'dbname' => 'hotel'
 ));

  $db->getConnection();
} catch (Zend_Db_Adapter_Exception $e) {
  die("Zend_Db_Adapter_Exception: ".$e->getMessage());
} catch (Zend_Exception $e) {
  die("Zend_Exception".$e->getMessage());
}

Zend_Registry::set('db', $db);

// Create application, bootstrap, and run
$application = new Zend_Application(
  APPLICATION_ENV, 
  APPLICATION_PATH . '/configs/application.ini'
);
$application->bootstrap()
      ->run();
risposto 6 anni fa
Tullio
X 0 X

Si, tutto in ordine.

Dove definisci i parametri di connessione al database?

Cosa usi per connetterti al database?

risposto 6 anni fa
Mario Santagiuliana
X 0 X

I parametri per connettermi al db sono quelli che ho postato del file index.phtml.

E l'errore sta proprio l, cio quando cerca di connettersi al db tramite questo comando:

//connessione db
try {
  $db = Zend_Db::factory('Pdo_Mysql', array(
  'host'  => 'localhost',
  'username' => 'root',
  'password' => 'artemide',
  'dbname' => 'hotel'
 ));

  $db->getConnection();
} catch (Zend_Db_Adapter_Exception $e) {
  die("Zend_Db_Adapter_Exception: ".$e->getMessage());
} catch (Zend_Exception $e) {
  die("Zend_Exception".$e->getMessage());
}

Zend_Registry::set('db', $db);

Infatti viene catturata un'eccezione del tipo: zend_db_adapter...

risposto 6 anni fa
Tullio
X 0 X

Oh cavolo...sono proprio cotto...scusami...non mi ero accorto...scusami davvero...

La password di fantasia vero? Non la password reale, se lo cancellala, non il caso di lasciarla qui sul forum e poi cambiala che non una password sicura.

Allora nella pagina di informazioni di php c' pdo mysql?

risposto 6 anni fa
Mario Santagiuliana
X 0 X

Si, la password di fantasia...

Hai proprio ragione!! controllando la differenza tra il mio phpinfo, e quello su web mi sono accorto che in quello web, sotto la voce PDO c' solo sqlite, invece nel mio c' anche mysql...

:wallbash:

dato che non posso modificare il file php.ini (se non tramite l'assistenza dello spazio web) c' niente che posso fare per risolvere questo problema?

risposto 6 anni fa
Tullio
X 0 X

Potresti provare ad usare l'adapter mysqli, sempre che tu ce l'abbia disponibile.

Poi testa bene il tuo sistema.

E altrimenti chiedi al tuo hosting provider di inserire il pdo.

risposto 6 anni fa
Mario Santagiuliana
X 0 X

Grazie mille per tutto l'aiuto che mi hai dato!!! :)

Ora sento il provider e vediamo se riesco a fargli installare pdo-mysql...

Grazie davvero.. appena sapr qualcosa ti avviso!!! O0

risposto 6 anni fa
Tullio
X 0 X

Prova anche mysqli, dovrebbe funzionarti senza problemi.

risposto 6 anni fa
Mario Santagiuliana
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda