Mak*_*kla 0 php postgresql batch-file
我尝试使用 PHP 脚本备份数据库。我的想法是使用 PHP 作为批处理文件运行 pg_dump。(是的,我在 Windows 上使用 PHP)。
我写这个代码:
$content = "set BACKUP_FILE=database.backup \r\n" .
"SET PGPASSWORD=" . COF_DATABASE_PASSWORD . "\r\n" .
"pg_dump -i -U " . COF_DATABASE_USERNAME . " -F c -b -v -f %BACKUP_FILE% " . COF_DATABASE_NAME . "\r\n" .
"echo done";
file_put_contents($root . "/Files/Updates/Backup.bat", $content);
$system = exec ($root . "/Files/Updates/Backup.bat", $result);
pclose(popen("start /B $root/Files/Updates/Backup.bat", "r"));
$result = shell_exec($root . "/Files/Updates/Backup.bat");
Run Code Online (Sandbox Code Playgroud)
创建 Backup.dat 文件。如果我从 Windows 手动运行它,则会创建 database.backup 文件,但当我尝试从 PHP 运行批处理时不会。对于这两个命令,我都输入了 $result:
(string:241) D:\Data\WWW...\Process>set BACKUP_FILE=database.backup
D:\Data\WWW...\Process>SET PGPASSWORD=dom123
D:\Data\WWW...\Process>pg_dump -i -U dom -F c -b -v -f database.backup dom
一次作为数组 (exec),一次作为字符串 (shell_exec)。
然后我在想运行 bat 文件(即使我在代码中创建然后删除)不是最聪明的想法(安全)。所以我尝试使用 SQL-s 备份数据库(PDO - 执行...)
但是,如果这可能的话,我找不到任何文档。所有解决方案都建议 pg_dump。是否有任何 SQL 命令可以将整个数据库备份到文件?
我正在寻找一个有效的解决方案。SQL 或 .bat,此时并不重要。
编辑:
还可以尝试:
$string = "export PGPASSWORD=" . COF_DATABASE_PASSWORD . " && export PGUSER=" . COF_DATABASE_USERNAME . " && pg_dump -h localhost db_name " . COF_DATABASE_NAME . " > " . $root . "Files/Updates/Backup.sql && unset PGPASSWORD && unset PGUSER";
exec($string);
shell_exec($string);
Run Code Online (Sandbox Code Playgroud)
编辑(克雷格林格的回答):
试试你的代码,我收到错误。
1:从该页面捕获所有一般错误
对于图像在新选项卡中打开链接以获得完整尺寸。
您可以尝试使用以下命令。我也有同样的问题。我通过使用附加的代码修复了这个问题:
<?php
exec('pg_dump --dbname=postgresql://username:password@127.0.0.1:5432/mydatabase > dbbackup.sql',$output);
print_r($output);
?>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9822 次 |
| 最近记录: |