/ / Il file pgpass.conf di Windows non funziona con shell_exec () di PHP - php, windows, postgresql, password

Il file pgpass.conf di Windows non funziona con shell_exec () di PHP - php, windows, postgresql, password

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.