如果我在命令行上执行以下命令,则效果很好
C:\\Program Files\\PostgreSQL\\10\\bin\\pg_dump.exe" -U postgres -h localhost -d mydb -f "C:\\backup\\backUp.sql" 2>&1'
当我通过脚本执行相同操作后,它永远不会结束。
<?php print_r(exec('"C:\\Program Files\\PostgreSQL\\10\\bin\\pg_dump.exe" -U postgres -h localhost -d mydb -f "C:\\backup\\backUp.sql" 2>&1'));?>
答案 0 :(得分:1)
因此,我能够跟踪实际的问题,代码不是真正的问题,主要是未设置环境变量,在设置这些东西后,它们开始平稳运行,
您可以在Window 10中如下设置环境变量,
;C:\Program Files\PostgreSQL\10\bin ;C:\Program Files\PostgreSQL\10\lib
请注意:在Windows 10上,如果您遵循以下步骤:计算机=>属性=>高级系统设置=>环境变量=>系统变量>选择PATH,则实际上可以获得添加新行的选项。单击“编辑”,添加/ bin和/ lib文件夹位置并保存更改。
此后,您将遇到“密码无效”,“密码提示”的问题,为避免这种情况,只需使用SET PGPASSWORD = P0stgres&如下所示,
<?php print_r(exec('SET PGPASSWORD=yourpassword pg_dump -U postgres -h localhost -d mydb -f "C:\\backup\\backUp.sql" 2>&1'));?>
如果上述方法不起作用,请在密码后面加上&。
<?php print_r(exec('SET PGPASSWORD=yourpassword& pg_dump -U postgres -h localhost -d mydb -f "C:\\backup\\backUp.sql" 2>&1'));?>
非常感谢以下问题终于解决了这个问题:)
Postgres "psql not recognized as an internal or external command"
Setting PGPASSWORD environment variable for Postgres (psql) process executed by Inno Setup
答案 1 :(得分:0)
首先尝试:
<?php
$command = exec("C:\\Program Files\\PostgreSQL\\10\\bin\\pg_dump.exe -U postgres -h localhost -d mydb -f 'C:\\backup\\backUp.sql' 2>&1");
print $command;
?>
如果它没有退出,则需要检查登录后是否存在内部退出PostgreSQL的方法。
您可以添加到命令中的内容,例如&& exit