2015-11-07 23 views
10

Sto lavorando con mapbender3 che è sviluppato in symfony2 sul mio computer locale. Mi viene chiesto di collegare l'applicazione a un server potgreSQL remoto. Di seguito è riportata la configurazione nel file parameters.yml.creazione del database da postgreSQL con symfony

parameters: 
    database_driver: pdo_pgsql 
    database_host:  192.168.3.100 
    database_port:  5434 
    database_name:  idc_core 
    database_path:  ~ 
    database_user:  ******* 
    database_password: ******* 

    mailer_transport: smtp 
    mailer_host:  localhost 
    mailer_user:  ~ 
    mailer_password: ~ 

Ma quando faccio funzionare l'ordine:

php app/console doctrine:database:create 

continuo a ricevere l'errore sotto

could not create database for connection named "idc_core" 
cound not find driver 

Sto usando server di WAMP su Windows 7 e il pdo_pgsql conducente mostra attivo e in esecuzione sul mio computer locale.

Ho controllato phpinfo() e visualizzato pdo_pgsql come abilitato ma quando corro php -m a comando per visualizzare i moduli compilati,

posso vedere DOP, pdo_mysql e PDO_SQLITE ma non pdo_pgsql

+0

Sembra non si dispone di 'pdo_pgsql' in php (è possibile verificare con' phpinfo() ') – DonCallisto

+0

è l'estensione di "extension = php_pgsql.dll" commentate in php.ini? – devz

+0

@DonCallisto 'pdo_pgsql' è caricato e abilitato in' phpinfo() ' – goseo

risposta

3

Si dovrebbe aggiungere pdo_pgsql estensione nella CLI config del php in

yourPhpDirectory/cli/php.ini

CLI utilizza questa configurazione a lavorare in linea di comando, non quella per apache. Questo è il motivo per cui phpinfo(); mostra pdo_pgsql e php -m non. Inoltre, con il sistema operativo Windows è necessario riavviare lo strumento della riga di comando per vedere le differenze dopo ogni modifica della configurazione.

3

assicurarsi di configurare la chiave 'default' in app/config/database.php

Per Postgres, questo sarebbe 'default' => 'postgres',

Se si riceve un errore di [PDOException] could not find driver, controllare per vedere se hai le estensioni PHP corrette installate. Sono necessari pdo_pgsql.so e pgsql.so installati e abilitati. Le istruzioni su come farlo variano a seconda dei sistemi operativi.

Per Windows, le estensioni pgsql devono essere pre-scaricate con la distribuzione ufficiale di PHP. Basta modificare il php.ini e rimuovere le linee extension=pdo_pgsql.so e extension=pgsql.so

Inoltre php.ini, assicurarsi extension_dir è impostato per la directory appropriata. Dovrebbe essere una cartella denominata extensions o ext o simile all'interno della directory di installazione di PHP.

Infine, copiare libpq.dll da C:\wamp\bin\php\php5.*\ in C:\wamp\bin\apache*\bin e riavviare tutti i servizi tramite l'interfaccia WampServer.

Se continui a ricevere l'eccezione, potrebbe essere necessario aggiungere le postgres \bin directory al vostro PATH:

  1. Sistema Proprietà -> scheda Avanzate -> Variabili d'ambiente
  2. Nel gruppo 'Variabili di sistema' on metà inferiore della finestra, scorrere e trovare la voce PATH.
  3. Selezionalo e fai clic su Modifica
  4. Alla fine della voce esistente, inserisci il percorso completo della directory bin di Postgres. La cartella bin deve trovarsi nella directory principale della directory di installazione di Postgres.
  5. Riavviare qualsiasi prompt di comando aperto o, per essere certi, riavviare il computer.

Questo dovrebbe risolvere tutti i problemi. Per maggiori informazioni consultare:

Fonte: https://stackoverflow.com/a/25336292/1045444

2
  1. Attiva entrambe le estensioni php_pdo_pgsql e php_pgsql nel php.ini (quello per il CLI):

    extension=php_pdo_pgsql.dll 
    extension=php_pgsql.dll 
    
  2. Assicurarsi che "Porta" e "le credenziali di accesso" per il server remoto siano corretti testando da uno strumento di amministrazione del database, come l'amministratore.

Problemi correlati