Re: redirect stdout and stderr to PHP variables? [message #176808 is a reply to message #176807] |
Thu, 26 January 2012 10:43 |
Erwin Moller
Messages: 228 Registered: September 2010
Karma:
|
Senior Member |
|
|
On 1/26/2012 10:27 AM, crankypuss wrote:
> On 01/26/2012 02:00 AM, Tim Streater wrote:
>> In article <jfr340125sq(at)news4(dot)newsguy(dot)com>,
>> crankypuss <no(at)email(dot)thanks> wrote:
>>
>>> On 01/25/2012 03:53 PM, crankypuss wrote:
>>>> On 01/25/2012 02:46 PM, M. Strobel wrote:
>>>> > php> $res1 = exec('rm this-does-really-not-exist.php 2>&1', $a, $rc);
>>>> > php> echo $rc;
>>>> > 1
>>>> > php> print_r($a);
>>>> > Array
>>>> > (
>>>> > [0] => rm: Entfernen von „this-does-really-not-exist.php“ nicht
>>>> > möglich: Datei
>>>> > oder Verzeichnis nicht gefunden
>>>> > )
>>>> > php>
>>>>
>>>> Thanks, will try these in the morning.
>>>
>>> BTW, where is this syntax documented? I'd prefer understanding it to
>>> using magic.
>>
>> Which syntax, exactly? exec is documented in the PHP online docs.
>
> Sorry, I've been unable to find the bit about redirecting stdout and
> stderr to PHP variables, can you point me to that? Yes, exec() provides
> an optional &$output argument which in effect redirects stdout to the
> varialble, but I see no way to obtain stderr separately. Thanks.
Hi crankypuss,
You only see this redirecting in functions that handle with STDERR and
STDOUT, functions like exec() you already use.
When you are working within 'normal' PHP (as in "No external processes
invoked by user", so no exec() and the like) you don't have the concept
of STDERR directly, nor do you need it.
Of course: errors can still occur, but PHP will handle them. You can
modify HOW you want PHP to handle them (logging into file/errorlog, put
them on screen, invoke some custom-errorhandler/etc).
To put it very simple (and probably incorrect) to get the general idea:
You can think of PHP in relation with STDIN and STDOUT and STDERR like this:
STDIN for PHP is what is feeded to PHP (via Apache, or commandline)
So that consists typically of things like (part of) URL, cookies,
referrer, etc.
STDOUT is what PHP produces and is returned to the client (most of the
time with a webserver inbetween).
STDERR is where PHP directs its erorrs to. (Think logfile, and/or to
STDOUT: this is all configurable.)
But you don't see STDIN/STDOUT/STDERR when you work with PHP without
using exec().
Regards,
Erwin Moller
--
"That which can be asserted without evidence, can be dismissed without
evidence."
-- Christopher Hitchens
|
|
|