Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > it.comp.www.php > #21378

Re: intercettare php://stdout

From Alessandro Pellizzari <shuriken@amiran.it>
Newsgroups it.comp.www.php
Subject Re: intercettare php://stdout
Date 2017-01-19 10:57 +0000
Message-ID <eebkdfFd0tdU1@mid.individual.net> (permalink)
References <o5pr2m$pmu$1@gioia.aioe.org> <c860f180-3f45-4e78-dd77-f52faefe6156@che_leggi_in.firma> <o5q3j8$18b8$1@gioia.aioe.org>

Show all headers | View raw


On 19/01/2017 10:15, alex wrote:

> Il 19/01/2017 09:03, g4b0 ha scritto:
>> Dipende dal contesto in cui sei. Tralasciando i syntax error che hai
>> postato,
>
> ????

Hai scritto stout/sterr invece di stdout/stderr.

>> genericamente parlando stderr é lo stream di errore, mentre
>> stdout é lo stream di output.
>
> si

Per precisare: sono gli stream del processo che esegue il codice.

Quindi di mod_php nel caso di Apache o FPM, e di php-cli nel caso 
appunto di Pphp-cli.

> Da terminale:
>
> $ firefox http://local/test.php
>
> e quindi voglio che certi dati (di debug) venissero visualizzati nella
> console (terminale), e non nella pagina web.
> Si può?

No.

"Shell" significa "conchiglia", perché i processi che ci lanci sono 
"chiusi dentro" l'ambiente della shell stessa.

Quindi stdout e stderr di firefox sono una cosa. stdout e stderr del 
webserver sono un'altra.

Puoi fare un pstree per vedere il nesting dei processi. Avrai qualcosa tipo

init --- bash --- firefox
       |- apache --- apache --- mod_php --- test.php
                  |- apache --- mod_php --- test.php
                  ...

Come vedi per mandare output da mod_php alla bash di firefox dovresti 
risalire apache (child) -> apache (parent) -> init e poi ridiscendere 
init -> bash

Visto che init se ne sbatte di tutto (tranne che degli zombie), e che 
apache ha forkato come daemon (droppando stdout e stderr, quindi 
mandando qualsiasi cosa nel limbo), non puoi.

Quello che succede di solito è che da test.php ordini a mod_php di 
scrivere sul suo stderr qualcosa (con la funzione che hai scritto).
Apache (child) intercetta lo stderr di mod_php e lo scrive su un log, 
per poi scartarlo.

Non c'è una risalita verso l'alto, perché quella è riservata agli errori 
che il child vuole comunicare al parent.

Bye.

Back to it.comp.www.php | Previous | NextPrevious in thread | Next in thread | Find similar | Unroll thread


Thread

intercettare php://stdout alex <1j9448a02@lnx159sneakemail.com.invalid> - 2017-01-19 08:49 +0100
  Re: intercettare php://stdout g4b0 <email_sul_mio_sito@che_leggi_in.firma> - 2017-01-19 09:03 +0100
    Re: intercettare php://stdout alex <1j9448a02@lnx159sneakemail.com.invalid> - 2017-01-19 11:15 +0100
      Re: intercettare php://stdout g4b0 <email_sul_mio_sito@che_leggi_in.firma> - 2017-01-19 11:54 +0100
        Re: intercettare php://stdout alex <1j9448a02@lnx159sneakemail.com.invalid> - 2017-01-19 12:39 +0100
      Re: intercettare php://stdout Alessandro Pellizzari <shuriken@amiran.it> - 2017-01-19 10:57 +0000
        Re: intercettare php://stdout alex <1j9448a02@lnx159sneakemail.com.invalid> - 2017-01-19 12:46 +0100

csiph-web