Ho installato windows / apache / php / postgres(php 5.3 e Postgres 9) Sto cercando di eseguire una riga di comando "psql" da PHP, quindi per questo ho bisogno che psql non richieda la password. Ho già un file pgpass.conf nel %appdata%/postgresql
sentiero
Se eseguo la linea dalla riga di comando di Windows
"C:Program FilesBitNami WAPPStackpostgresqlbinpsql.exe" -U postgres -w -d [DB] < "[SQL FILE]"
funziona bene, ma quando viene eseguito tramite PHP con shell_exec () non funziona, dice il log degli errori di Apache "psql: fe_sendauth: no password supplied"
Quindi, non so perché funzioni dalla riga di comando ma non da PHP "s shell_exec()
Saluti!
risposte:
1 per risposta № 1%appdata%
probabilmente non è lo stesso tra l'ambiente di esecuzione di apache e la riga di comando di Windows su cui stai testando. Generalmente su Windows, Apache dovrebbe funzionare come un servizio sotto il LocalSystem
conto (vedi Utilizzo di Apache HTTP Server su Microsoft Windows)
Ma potresti memorizzare un pgpass.conf
archiviare in un altro posto indicato da PGPASSFILE
variabile di ambiente in apache (a SetEnv
dichiarazione nel file di configurazione di Apache dovrebbe fare, o nel codice php).
O evitare del tutto il file password e impostare il PGPASSWORD
variabile d'ambiente direttamente al valore della password appena prima dell'esecuzione psql
.