我安装了windows / apache / php / postgres(php 5.3和Postgres 9)
我正在尝试从PHP执行“psql”命令行,所以为此我需要psql不要求密码。
我已经在%appdata%/postgresql
路径
如果我从windows命令行执行该行
"C:\Program Files\BitNami WAPPStack\postgresql\bin\psql.exe" -U postgres -w -d [DB] < "[SQL FILE]"
它工作正常,但是当通过PHP使用shell_exec()完成时它不起作用,apache错误日志说"psql: fe_sendauth: no password supplied"
所以,我不知道为什么它可以从命令行运行,但不能从PHP的shell_exec()
问候!
答案 0 :(得分:1)
%appdata%
在apache的执行环境和您正在测试的Windows命令行之间可能不一样。通常在Windows上,apache应在LocalSystem
帐户下作为服务运行(请参阅Using Apache HTTP Server on Microsoft Windows)
但是您可以将pgpass.conf
文件存储在apache中PGPASSFILE
环境变量所指向的不同位置(apache配置文件中的SetEnv
声明应该这样做,或者在php中码)。
或者完全避免使用密码文件,并在执行PGPASSWORD
之前将psql
环境变量直接设置为密码值。