Re: redirect stdout and stderr to PHP variables? [message #176809 is a reply to message #176808] |
Thu, 26 January 2012 11:14 |
crankypuss
Messages: 147 Registered: March 2011
Karma:
|
Senior Member |
|
|
On 01/26/2012 03:43 AM, Erwin Moller wrote:
> 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
So how do you capture only STDERR when using exec() ?
|
|
|