|
Posted by jdbartlett on 08/20/07 20:59
On Aug 20, 3:39 pm, Andy Hassall <a...@andyh.co.uk> wrote:
> On Mon, 20 Aug 2007 19:33:58 -0000, jdbartlett <cont...@jdbartlett.com> wrote:
> >I'm trying to capture output from a command line utility (XMLSec), but
> >only get an empty result. If I call the script from the command line,
> >I see XMLSec's output, but I can't seem to capture it!
>
> >My PHP installation is working correctly and captures other command
> >line output just fine, XMLSec is the only exception I've found. I've
> >also tried a couple of other systems to confirm this behavior.
>
> >Capture methods I've tried include:
>
> >- shell_exec
>
> >- exec, with and without output array
>
> >- system
>
> >- passthru combined with output buffering
>
> >- fread-ing from popen('xmlsec1...', 'r')
>
> >- proc_open
>
> >I get the same result for each of these: an empty string (or array in
> >the case of exec's $output).
>
> >Any idea what's happening here? Any help would be much appreciated.
>
> Is it writing to stderr (standard error) instead of stdout (standard output)?
> --
> Andy Hassall :: a...@andyh.co.uk ::http://www.andyh.co.ukhttp://www.andyhsoftware.co.uk/space:: disk and FTP usage analysis tool
One of those slap-forehead-with-palm "D'oh! I'm an idiot!" moments.
Thank you! Yes, of course, that's exactly what's happening.
IMO, that's a very odd way for a utility to act, but that doesn't make
me feel any less an idiot!
For anyone stumbling into this thread with a similar problem, you need
to reroute stderr to stdout (and stdout to /dev/null if you want
errors only), like so:
var_dump(shell_exec('xmlsec1 verify --id-attr:id Body --trusted-pem
my_public.crt my_signed.xml * 2>&1 1>/dev/null'));
Thanks again!
[Back to original message]
|