Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > it.comp.www.php > #21371 > unrolled thread
| Started by | alex <1j9448a02@lnx159sneakemail.com.invalid> |
|---|---|
| First post | 2017-01-19 08:49 +0100 |
| Last post | 2017-01-19 12:46 +0100 |
| Articles | 7 — 3 participants |
Back to article view | Back to it.comp.www.php
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
| From | alex <1j9448a02@lnx159sneakemail.com.invalid> |
|---|---|
| Date | 2017-01-19 08:49 +0100 |
| Subject | intercettare 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]
| From | g4b0 <email_sul_mio_sito@che_leggi_in.firma> |
|---|---|
| Date | 2017-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]
| From | alex <1j9448a02@lnx159sneakemail.com.invalid> |
|---|---|
| Date | 2017-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]
| From | g4b0 <email_sul_mio_sito@che_leggi_in.firma> |
|---|---|
| Date | 2017-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]
| From | alex <1j9448a02@lnx159sneakemail.com.invalid> |
|---|---|
| Date | 2017-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]
| From | Alessandro Pellizzari <shuriken@amiran.it> |
|---|---|
| Date | 2017-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]
| From | alex <1j9448a02@lnx159sneakemail.com.invalid> |
|---|---|
| Date | 2017-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