On Sat, February 17, 2007 2:49 pm, Peter Lauri wrote:
> I am executing exec('some cool command', $stdout, $exitcode);
>
> That is fine. I get what I in the beginning wanted. However, now I
> need to
> catch the STDERR that the command is generating as well. Some of you
> might
> tell me to redirect STDERR to STDOUT, but that is not possible as I
> need to
> use the STDOUT as is to automate a process.
>
> I know I can do fwrite(STDERR, 'Output some error\n');
>
> So could I fread(STDERR, SOMESIZE)?

Do you need STDERR to go "out" to, err, wherever it goes, *AND* get it
into your PHP script?

Perhaps 'tee' (man tee) would let you do that.

Or do you just need STDOUT in one variable, and STDERR in another,
both in PHP?

I think you could do something in shell to re-bind STDOUT to some
other file/pipe, and then run your cool command...

$tmpfile = tmpfile(); //I always get this one wrong.
exec("rebind 2 $tmpfile; some cool command', $output, $error);
$stderr = file_get_contents($tmpfile);

It's probably not called 'rebind' but I know it's some shell command
that does this.

Possibly shell-specific, so you may even need to wrap the whole thing
in a 'bash' call.

Another option is to try to write a .sh shell script to get what you
want for STDOUT to go where you want, and THEN just call that script
(which has 'some cool command' at the end) from PHP, and let the
weird-o shell stuff be done in a shell script, and not clutter up your
PHP code with a complex shell script setup/tear-down.

> Is there anyone with experience of best way of doing this? Should I
> maybe
> use proc_open or something similar and then write it to a file, and
> then
> read that file? Hrm, doesn’t make any sense to do that.

-- 
Some people have a "gift" link here.
Know what I want?
I want you to buy a CD from some starving artist.
http://cdbaby.com/browse/from/lynch
Yeah, I get a buck. So?

-- 
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to