From: | Christian Hammers <ch(at)lathspell(dot)de> |
---|---|
To: | jody <jody(dot)xha(at)gmail(dot)com> |
Cc: | pgsql-novice(at)postgresql(dot)org |
Subject: | Re: db dump from php |
Date: | 2013-01-07 09:37:03 |
Message-ID: | 20130107103703.7ca5282e@sys-251.netcologne.de |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-novice |
Hello
Instead of exec(), try
$output = `$sQuery1 2>&1`;
You don't get the return code then but the stdout/stderr output which might
help you more.
bye,
-christian-
On Sun, 6 Jan 2013 14:50:50 +0100
jody <jody(dot)xha(at)gmail(dot)com> wrote:
> Hi
> I have a problem when creating a db dump from a php script in a html page.
> This used to work in previous PostgreSQL versions, but now (v, 9.1.5)
> it fails, and i have no idea why.
>
> It is not a matter of write-access, since the directory has mode 777,
> and in the same php-file i successfully create a file there.
>
> Here's a minimal version which shows the behavior:
>
> <html>
> <head></head>
> <body>
> <?php
> putenv('PG_USER=magnus');
> putenv('PG_PASSWORD=mypass');
> putenv('PG_DB=magnus2');
> putenv('PG_HOST=localhost');
> putenv('PGPASSFILE=/home/jody/.pgpass');
>
> $sPath="/home/jody/progs/magnus2/dumps/dumpidump.sql";
> $sDBName="magnus2";
> $sQuery1="/usr/bin/pg_dump -w -U magnus -c -f $sPath $sDBName";
>
> exec($sQuery1, $output, $iRet);
>
> print("Q:" . $sQuery1 . "<br/>");
> print("ret:" . $iRet . "<br/>");
> foreach($output as $ss) {
> print("out:" . $ss . "<br/>");
> }
>
> print("<hr/>\n");
>
> $sQuery2="echo gnagna > " . $sPath . ".test";
> exec($sQuery2, $output, $iRet);
> print("Q:" . $sQuery2 . "<br/>");
> print("ret:" . $iRet . "<br/>");
> foreach($output as $ss) {
> print("out:" . $ss . "<br/>");
> }
> ?>
> The call to pg_dump fails with a return code of 1, and $output is empty.
> The second call succeeds with return code 0, and a file is indeed written.
>
> When i replace $sQuery1 by "/usr/bin/pg_dump --version" the cal
> succeeds with return code 0,
> and $output contains the string "pg_dump (PostgreSQL) 9.1.5"
>
> When i copy-paste the command contained in $sQuery to the command line,
> it succeeds.
>
> In my home directory /home/jody i have .pgpass file, with the correct
> username and password.
>
> Is there a way to specify a password on the command line?
> Can somebody give me a hint how i can get this to work?
>
> Thank You
> Jody
>
>
--
Network Engineering & Design; Content Delivery Platform & IP
NETCOLOGNE Gesellschaft für Telekommunikation mbH
Am Coloneum 9 | 50829 Köln
Tel: 0221 2222-8711 | Fax: 0221 2222-78711
www.netcologne.de
Geschäftsführer:
Dr. Hans Konle (Sprecher)
Dipl.-Ing. Karl-Heinz Zankel
HRB 25580, AG Köln
Diese Nachricht (inklusive aller Anhänge) ist vertraulich. Sollten Sie diese
Nachricht versehentlich erhalten haben, bitten wir, den Absender (durch
Antwort-E-Mail) hiervon unverzüglich zu informieren und die Nachricht zu
löschen. Die E-Mail darf in diesem Fall weder vervielfältigt noch in anderer
Weise verwendet werden.
From | Date | Subject | |
---|---|---|---|
Next Message | jody | 2013-01-07 19:02:24 | Re: db dump from php |
Previous Message | Tom Lane | 2013-01-06 21:34:03 | Re: db dump from php |