Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows pgpass.conf文件不适用于PHP';s shell_exec()_Php_Windows_Postgresql_Passwords - Fatal编程技术网

Windows pgpass.conf文件不适用于PHP';s shell_exec()

Windows pgpass.conf文件不适用于PHP';s shell_exec(),php,windows,postgresql,passwords,Php,Windows,Postgresql,Passwords,我安装了windows/apache/php/postgres(PHP5.3和Postgres9) 我正试图从PHP执行一个“psql”命令行,因此为此我需要psql不要求密码。 我在%appdata%/postgresql路径中已经有一个pgpass.conf文件 如果我从windows命令行执行该行 "C:\Program Files\BitNami WAPPStack\postgresql\bin\psql.exe" -U postgres -w -d [DB] < "[SQL FI

我安装了windows/apache/php/postgres(PHP5.3和Postgres9) 我正试图从PHP执行一个“psql”命令行,因此为此我需要psql不要求密码。 我在
%appdata%/postgresql
路径中已经有一个pgpass.conf文件

如果我从windows命令行执行该行

"C:\Program Files\BitNami WAPPStack\postgresql\bin\psql.exe" -U postgres -w -d [DB] < "[SQL FILE]" 
“C:\Program Files\BitNami WAPPStack\postgresql\bin\psql.exe”-U postgres-w-d[DB]<”[SQL文件]“
它可以正常工作,但是当通过PHP使用shell_exec()完成时,它就不起作用了,apache错误日志显示“psql:fe_sendauth:no password supplied”

所以,我不知道为什么它是从命令行运行的,而不是从PHP的
shell\u exec()


问候

%appdata%
在apache的执行环境和您测试的windows命令行之间可能不一样。通常在Windows上,apache将作为
LocalSystem
帐户下的服务运行(请参阅)

但是您可以将
pgpass.conf
文件存储在apache中的
PGPASSFILE
环境变量所指向的不同位置(apache配置文件中的
SetEnv
声明应该可以,或者php代码中也可以)


或者完全避免使用密码文件,并在执行
psql

之前直接将
PGPASSWORD
环境变量设置为密码值,因为我这样做是为了本地连接到postgres,所以我只是更改了pg_hba.conf文件,以便本地连接现在是可信的。所以我不再使用pgpass文件。