Newsgroup: it.comp.www.php
Titolo: Errore caricamento modulo

Sto impazzendo cercando di caricare il modulo php_pgsql.dll
Windows server 2008 + apache 2.2 + php 5.3
Funzionava tutto perfettamente finch� un bel giorno non decidiamo di 
aggiungere un dominio active directory.
Tempo 5 minuti e torniamo indietro, e ovviamente tutti gli account "locali" 
del server sono saltati (e quindi l'account di apache)
Rimesso tutto a posto, dato all'account di apache tutti i permessi nella 
cartella con le estensioni di php, nel log degli errori trovo
PHP Warning:  PHP Startup: Unable to load dynamic library 'C:/Program Files 
(x86)/php-5.3/ext/php_pgsql.dll' - The specified module could not be 
found.\r\n in Unknown on line 0
Ovviamente il file li c'�.....e ovviamente tutte le altre estensioni le 
carica correttamente!
Da prompt dei comandi, php -m non da errori e il modulo ci sta...
Se apro un sito che utilizza quella libreria mi viene restituito un errore 
"Call to undefined function pg_connect" ad esempio
Non so dove sbattere la testa 

Da prompt dei comandi, php -m non da errori e il modulo ci sta...
Questo perch� il prompt dei comandi e Apache usano due path diversi
per risolvere le dipendenze.
Welcome to DLL Hell, baby :-(
Leonardo
-- 
Enough, enough!  But, stranger, ere we part,
Glancing farewell to each nefarious bier,
This warning would I beg you take to heart:
There is an end to e'en the worst career!


Sfortunatamente non era un problema di dll (il DLL Hell lo conosco, 
pensa solo che abbiamo ancora dei progetti in VB6.....)
E sarebbe stato comunque molto strano, dato che prima della perdita 
degli acount locali tutto funzionava perfettamente. E infatti non avevo 
dato ad apache i permessi di lettura/scrittura della data directory di 
postgres. Fatto questo tutto è andato a posto :)

postgres. Fatto questo tutto è andato a posto :)
Mi sembra abbastanza demenziale che il controllo sui permessi lo faccia in
fase di caricamento DLL, quando può ritornare solo OK o FAIL per millemila
(tm) motivi, anziche' dopo (e.g. in fase di connect) quando potrebbe farsi
capire via pg_error :-|
(Ed ancora più strano che una libreria CLIENT si faccia i ca...voli di una
directory sul SERVER che potrebbe anche non essere raggiungibile via FS...
ma questo scherzo me lo fece già qualche altro software, rammento)
Leonardo S.P.Q.P.



Ma infatti non ho capito (e non mi sono messo ad indagare) il motivo di 
questa cosa....
Così, tanto per fare gratuite speculazioni gratuite, ho pensato potesse 
essere legato a come postgres gestisce le connessioni (ovvero generando 
processi separati per ogni connessione). Questi processi girano 
evidentemente con l'account di apache, e quindi non possono interagire 
con il db...boh...comunque su linux non mi è mai successa una cosa dle 
genere......
Oppure (mi sa più plausibile) ci sarà qualche dll nella data dir di 
postgres, ed finchè non sposti la datadir e non cambi gli account dei 
servizi va tutto bene....

servizi va tutto bene....
Giusto; non ci avevo pensato, ma mi sa che ci hai preso tu. Ci sta che
dati e DLL stiano tutti nello stesso posto o cose del genere... questo
spiegherebbe ogni cosa. Non è un "controllo sui permessi", è che salta
proprio il meccanismo di dl().
(Io per abitudine metto tutte le DLL ancillari nella dir di PHP, visto
che è a lui che servono. In caso di conflitti ci rimetto di memoria ma
non di sciroppo per il fegato).
Leonardo
