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


Groups > it.comp.www.php > #21371 > unrolled thread

intercettare php://stdout

Started byalex <1j9448a02@lnx159sneakemail.com.invalid>
First post2017-01-19 08:49 +0100
Last post2017-01-19 12:46 +0100
Articles 7 — 3 participants

Back to article view | Back to it.comp.www.php


Contents

  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

#21371 — intercettare php://stdout

Fromalex <1j9448a02@lnx159sneakemail.com.invalid>
Date2017-01-19 08:49 +0100
Subjectintercettare php://stdout
Message-ID<o5pr2m$pmu$1@gioia.aioe.org>
file_put_conents('php://sterr', ...);

e l'output mi va a finire in

/var/log/apache2/error.log

Però se invece di 'php://sterr' uso 'php://stout', l'output dove viene 
scritto?

[toc] | [next] | [standalone]


#21372

Fromg4b0 <email_sul_mio_sito@che_leggi_in.firma>
Date2017-01-19 09:03 +0100
Message-ID<c860f180-3f45-4e78-dd77-f52faefe6156@che_leggi_in.firma>
In reply to#21371
On 19/01/2017 08:49, alex wrote:
> file_put_conents('php://sterr', ...);
> 
> e l'output mi va a finire in
> 
> /var/log/apache2/error.log
> 
> Però se invece di 'php://sterr' uso 'php://stout', l'output dove viene
> scritto?

Dipende dal contesto in cui sei. Tralasciando i syntax error che hai
postato, genericamente parlando stderr é lo stream di errore, mentre
stdout é lo stream di output.

Da ció che scrivi stai lavorando con Apache, per cui stderr é il file
definito con la direttiva ErrorLog, mentre stdout é la console del
processo in esecuzione, che normalmente é in background e quindi viene
persa, a meno di redirezioni poco usuali. Se facessi girare Apache in
foreground [1] vedresti quanto scritto in stdout.

Se vuoi scrivere sullo stream inviato al browser puoi usare
'php://output', che é l'equivalente di print ed echo.

Maggiori info, come al solito, possono essere recuperate sul manuale
online: http://www.php.net/manual/en/wrappers.php.php

[1] esempio: /usr/local/apache2/bin/httpd -D FOREGROUND -k start

-- 
g4b0, linux user n. 369000
http://brosulo.net

[toc] | [prev] | [next] | [standalone]


#21376

Fromalex <1j9448a02@lnx159sneakemail.com.invalid>
Date2017-01-19 11:15 +0100
Message-ID<o5q3j8$18b8$1@gioia.aioe.org>
In reply to#21372
Il 19/01/2017 09:03, g4b0 ha scritto:
> Dipende dal contesto in cui sei. Tralasciando i syntax error che hai
> postato,

????

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

si

> Da ció che scrivi stai lavorando con Apache, per cui stderr é il file
> definito con la direttiva ErrorLog, mentre stdout é la console del
> processo in esecuzione, che normalmente é in background e quindi viene
> persa, a meno di redirezioni poco usuali. Se facessi girare Apache in
> foreground [1] vedresti quanto scritto in stdout.
>

Sai in realtà cosa voglio fare?

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ò?

[toc] | [prev] | [next] | [standalone]


#21377

Fromg4b0 <email_sul_mio_sito@che_leggi_in.firma>
Date2017-01-19 11:54 +0100
Message-ID<o5q60l$1ch6$1@gioia.aioe.org>
In reply to#21376
On 19/01/2017 11: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,
> 
> ????

file_put_conents('php://sterr', ...);

            ^             ^
         manca t       manca d

>> Da ció che scrivi stai lavorando con Apache, per cui stderr é il file
>> definito con la direttiva ErrorLog, mentre stdout é la console del
>> processo in esecuzione, che normalmente é in background e quindi viene
>> persa, a meno di redirezioni poco usuali. Se facessi girare Apache in
>> foreground [1] vedresti quanto scritto in stdout.
>>
> 
> Sai in realtà cosa voglio fare?
> 
> 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ò?

Non cosí. Per debuggare PHP in questo modo puoi provare Clockwork, o
forse xdebug con qualche estensione per il browser. Ma non l'ho mai
fatto, mi trovo bene con xdebug e Netbeans (quando funziona).


-- 
g4b0, linux user n. 369000
http://brosulo.net

[toc] | [prev] | [next] | [standalone]


#21380

Fromalex <1j9448a02@lnx159sneakemail.com.invalid>
Date2017-01-19 12:39 +0100
Message-ID<o5q8h6$1hcb$1@gioia.aioe.org>
In reply to#21377
Il 19/01/2017 11:54, g4b0 ha scritto:
> On 19/01/2017 11: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,
>>
>> ????
>
> file_put_conents('php://sterr', ...);
>
>             ^             ^
>          manca t       manca d
>

:D :D :D :D :D :D :D :D :D
È un esempio, e dai che si capisce lo stesso...
:D :D :D :D :D :D :D :D :D :D
Ironia :D :D :D

> Non cosí. Per debuggare PHP in questo modo puoi provare Clockwork, o
> forse xdebug con qualche estensione per il browser. Ma non l'ho mai
> fatto, mi trovo bene con xdebug e Netbeans (quando funziona).

Ok!!!

[toc] | [prev] | [next] | [standalone]


#21378

FromAlessandro Pellizzari <shuriken@amiran.it>
Date2017-01-19 10:57 +0000
Message-ID<eebkdfFd0tdU1@mid.individual.net>
In reply to#21376
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.

[toc] | [prev] | [next] | [standalone]


#21381

Fromalex <1j9448a02@lnx159sneakemail.com.invalid>
Date2017-01-19 12:46 +0100
Message-ID<o5q8v9$1hvb$2@gioia.aioe.org>
In reply to#21378
Il 19/01/2017 11:57, Alessandro Pellizzari ha scritto:
> Non c'è una risalita verso l'alto, perché quella è riservata agli errori
> che il child vuole comunicare al parent.

grazie delle info :)

[toc] | [prev] | [standalone]


Back to top | Article view | it.comp.www.php


csiph-web