2013-06-22 17 views
5

Sto cercando di utilizzare postgres con PHP, ma Apache non può caricare l'estensione.Utilizzo di postgresql con php in windows/xampp

sto usando:

Windows 7 (64 bit) con XAMPP, e ho php versione 5.4.7 ho già impostato Postgres, e altre applicazioni possono accedere ai database.

Quando ho commento dalle linee seguenti nel mio php.ini

extension=php_pdo_mysql.dll 
extension=php_pdo_pgsql.dll 
extension=php_pdo_sqlite.dll 

ottengo alcuni errori in php-error-log:

[22-giu-2013 13:15: 22 UTC] Avviso PHP: avvio di PHP: impossibile caricare la libreria dinamica "C: \ xampp \ php \ ext \ php_pdo_pgsql.dll" - Das angegebene Modul wurde nicht gefunden. in Unknown on line 0

Ma il percorso è corretto ei file sono lì.

Dopo alcune ricerche, ho aggiunto questa linea al mio http.conf:

LoadFile "C:/Program Files/PostgreSQL/9.2/bin/libpq.dll" 

Ma dovunque ho messo questa linea, l'apache-servizio non è in grado di avviare più. Quindi ho rimosso la linea.

Ho anche provato ad aggiungere questi 2 percorsi al mio PATH-Variabile:

C:\Program Files\PostgreSQL\9.2\bin 
C:\xampp\php\ext 

Ora l'errore cambiato in

in Unknown on line 0

Tutto è in funzione sulla stessa macchina locale. E l'utilizzo di server Linux/separati non è un'alternativa.

Il mio phpinfo() non mostra alcun elemento correlato a Postgres.

Spero che qualcuno sappia come risolvere il problema, Google non mi ha aiutato affatto.

+0

permesso? –

+0

@Denis Come posso sapere se si tratta di un problema di autorizzazione? – maja

+0

"'C: \ xampp \ php \ ext \ php_pdo_pgsql.dll' - Das angegebene Modul wurde nicht gefunden." - se il file esiste effettivamente, ma viene segnalato come non trovato, probabilmente significa che non è leggibile. Guarda le autorizzazioni del file in Windows Explorer e confrontale con le autorizzazioni di file dll simili. –

risposta

11

Ok, in qualche modo ho finalmente risolto il problema:

ho reinstallato XAMPP e Postgres ma postgres utilizzati 32bit-versione (Il 64bit-versione dovrebbe anche funzionare, ma ho voluto assicurarsi)

Poi ho attivato le estensioni in php.ini di nuovo:

extension=php_pdo_pgsql.dll 
extension=php_pdo_sqlite.dll 
extension=php_pgsql.dll 

ho ottenuto l'errore che il file non è stato trovato ancora una volta (php_error_log).

Dopo aver letto questo:

http://postgresql.1045698.n5.nabble.com/pgAgent-installation-fails-LIBPQ-DLL-is-missing-PostgreSQL-9-0-2-x64-2008-Windows-Server-x64-td3351434.html

ho scaricato libpq.dll da Postgres 8.4 e copiato sia in bin apache/e postgres/lib (sostituito la dll da lì).

Nella mia variabile di percorso c'è ancora C:\xampp\php\ext\, ma dovrebbe funzionare anche senza quella parte.

Ho lavorato a questo problema per 3 giorni e spero che aiuti gli altri a farlo funzionare più velocemente.

+0

L'ho installato su un nuovo PC, e funziona anche su Windows 8.1 con Postgres 9.3. La modifica della variabile di percorso non è necessaria. – maja

+0

sei riuscito a farlo funzionare con Postgre a 64 bit? –

+0

'ha sostituito la DLL da lì '- per favore spiega, cosa intendi? Hai sostituito una dll 9.x con le 8,4 dll che hai scaricato? –

5

Un'altra soluzione per questo è la copia

c:/xampp/php/libpq.dll 

al problema

c:/xampp/apache/bin/ 

Source

+0

Grazie funziona per me. –